2012-06-26 5 views
0

Можно создать дубликат:
The meaning of ' in Haskell function name?
Apostrophe in identifiers in HaskellАвтономные одиночные кавычки в Gofer

Я работаю свой путь, хотя this и реализующий его, как могу в Clojure. Хотя я не знаю ни одного Гофера (или Хаскелла), я все-таки выясняю, как иду. Тем не менее, я не могу найти нигде, что объясняет, как должны действовать одиночные кавычки и двойные одинарные кавычки после inp.

seq :: Parser a -> Parser b -> Parser (a,b) 
p `seq` q = \inp -> [((v,w),inp'') | (v,inp') <- p inp 
    , (w,inp'') <- q inp'] 

Помощь была бы очень признательна.

+3

Они ничего не означают, они являются частью имен. Это общий мотив, чтобы назвать похожие объекты похожими, используя апострофы, чтобы отличить их. 'inp'' (произнесенный inp-prime) - это вход слева после запуска первого парсера на исходном входе,' inp''' оставшийся вход после запуска второго парсера на том, что осталось после первого. Другой способ - называть их 'inp_1',' inp_2' или что-то в этом роде. –

+0

Ahhh, спасибо, неудивительно, что я не мог найти их в языковой ссылке :) – pondermatic

+0

Чтобы процитировать отчет Haskell: «Идентификатор состоит из буквы, за которой следуют ноль или несколько букв, цифр, подчеркиваний и одинарных кавычек». – augustss

ответ

0

(Скопировано из ответа Дона к предыдущему вопросу)


Апостроф только часть имени. Это соглашение об именах (идиома), принятое в Haskell.

Соглашение в Haskell заключается в том, что, как и в математике, апостроф в имени переменной представляет собой переменную, которая каким-то образом связана или похожа на предыдущую переменную.

Пример:

let x = 1 
    x' = x * 2 
in x' 

x' связана с x, и мы указываем, что с апострофа.