Что делает, символ означает в отношении списков в Haskell?

Существует много ссылок после этого краткий обзор из того, что включено в письменной форме ОС для платформы X86.

ссылка, которая, кажется, является самой многообещающей (www.nondot.org/sabre/os/articles), больше не доступна, таким образом, необходимо будет ввести по абсолютному адресу через версия Archive.org для чтения ее.

В конце дня загрузчик берет машинный код ядра, помещает его в память и переходит к нему. Можно поместить любой машинный код в ядро, которое Вы хотите, но большинство программ C ожидает ОС, таким образом, необходимо будет сказать компилятору, что это не будет иметь всего этого, или загрузчик должен создать часть его.

ядро тогда делает весь тяжелый подъем, и я подозреваю, что это - ядро в качестве примера, которое Вы хотите. Но существует длинный путь для движения между наличием ядра, которое говорит, "Привет мир" к наличию ядра, которое загружает межпретора команды, предоставляет дисковые услуги, и загружает и управляет программами.

Вы могли бы хотеть полагать, что подписка на ACM получает доступ к их более старой литературе - существует много статей в конце 80-х и в начале 90-х в ранних вычислительных журналах о том, как к создают альтернативный OSs. Существуют вероятные книги, которые распроданы с этой эры также. Вы могли бы быть в состоянии получить ту же информацию бесплатно путем поиска индексов тех журналов (которые доступны на том сайте - щелчок "индекс" около названия журнала), и затем расспрашивающий тут и там для людей с копией.

Наконец, я знаю, что Usenet мертва (для так sayeth пророки интернет-гибели), но Вы найдете, что многие скалистые старые эксперты с той эры все еще живут там. Необходимо искать группы Google (у них есть старый репозиторий dejanews), и я ожидаю, что Вы найдете многих людей, спрашивающих те же вопросы десятилетие или 1.5 назад, что Вы спрашиваете теперь. Можно даже натыкаться на многие запросы Linus Torvalds для справки, поскольку он разрабатывал Linux первоначально. Если поиски ничего не поднимают, спрашивают в соответствующей группе новостей (вероятно, запускается с comp.arch, но поиска с ОС на имя).

118
задан Don Stewart 17 April 2011 в 21:22
поделиться

3 ответа

Да, это просто синтаксический сахар, где @ читается вслух как «как». ps @ (p: pt) дает вам имена для

  1. списка: ps
  2. заголовок списка: p
  3. конец списка: pt

Без @ вам пришлось бы выбирать между (1) или (2) :( 3).

Этот синтаксис действительно работает для любого конструктора; если у вас есть Data Tree a = Tree a [Tree a] , то t @ (Tree _ kids) дает вам доступ как к дереву, так и к его дочерним элементам.

169
ответ дан 24 November 2019 в 01:57
поделиться

Чтобы добавить к тому, что сказали другие люди, они называются как-паттернами (в ML синтаксис использует ключевое слово «as») и описываются в раздел отчета Haskell, посвященный шаблонам .

9
ответ дан 24 November 2019 в 01:57
поделиться

Символ @ используется как для присвоения имени параметру, так и для сопоставления этого параметра с шаблоном, следующим за @ . Это не относится к спискам, а также может использоваться с другими структурами данных.

Это полезно, если вы хотите «разложить» параметр на его части, но при этом вам нужен параметр в целом где-то в вашей функции. Одним из примеров, где это так, является функция tails из стандартной библиотеки:

tails                   :: [a] -> [[a]]
tails []                =  [[]]
tails xxs@(_:xs)        =  xxs : tails xs
40
ответ дан 24 November 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: