Значение 'на имя функции Haskell?

Некоторое время назад в событии Microsoft ArcReady, я видел представление масштабирующихся шаблонов, которые могли бы быть полезны для Вас. Вы можете просматривать слайды для него онлайн.

10
задан yairchu 30 July 2009 в 16:50
поделиться

5 ответов

Цитата означает ничего в Haskell. Это просто часть имени этой функции.

Люди склонны использовать это для «внутренних» функций. Если у вас есть функция, которая суммирует список с использованием аргумента аккумулятора, ваша функция суммы будет принимать два аргумента. Это уродливо, поэтому вы создаете функцию sum ' для двух аргументов и функцию sum для одного аргумента, например sum list = sum' 0 list .

Отредактируйте, возможно, мне просто нужно показать код:

sum' s [] = s
sum' s (x:xs) = sum' (s + x) xs

sum xs = sum' 0 xs

Вы делаете это так, чтобы sum ' было хвостовой рекурсией, и чтобы «общедоступный API» выглядел красиво.

22
ответ дан 3 December 2019 в 13:20
поделиться

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

Итак, вы можете сказать

add = blah
add' = different blah

или

f x = 
  let x' = subcomputation x
  in blah.

Это просто привычка, например, использование int i в качестве индекса в цикле for для Java , C и т. Д.

Изменить: надеюсь, этот ответ более полезен теперь, когда я добавил все слова и форматирование кода. :) Я все время забываю, что это не WYSIWYG система!

16
ответ дан 3 December 2019 в 13:20
поделиться

В этом случае нет особого смысла для символа '; это просто часть идентификатора. Другими словами, myadd и myadd ' - разные, несвязанные функции.

Обычно, ' используется для обозначения некоторая логическая оценка отношения. Итак, гипотетические функции myadd и myadd ' будут связаны таким образом, что myadd' может быть получено из myadd . Это соглашение, полученное из формальной логики и доказательств в академических кругах (откуда Haskell имеет свои корни). Я должен подчеркнуть, что это только соглашение, Haskell не применяет его.

9
ответ дан 3 December 2019 в 13:20
поделиться

quote '- это еще один разрешенный символ в именах Haskell. Он часто используется для определения вариантов функций, и в этом случае кавычки произносятся как «простые». В частности, библиотеки Haskell используют варианты кавычек, чтобы показать, что вариант является строгим. Например: foldl ленивый, foldl ' строгий.

В этом случае похоже, что цитата используется только для разделения карри и несжатого вариантов.

6
ответ дан 3 December 2019 в 13:20
поделиться

Как говорили другие, ' не имеет никакого значения для самого Haskell. Это просто символ, например буква или число.

' используется для обозначения альтернативных версий функции (в случае foldl и foldl ') или вспомогательные функции. Иногда вы даже увидите несколько ' в имени функции. Добавление '

1
ответ дан 3 December 2019 в 13:20
поделиться
Другие вопросы по тегам:

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