Нотация vim haskell и функции для реализации SKI в Haskell - PullRequest
0 голосов
/ 21 января 2019

Попытка реализовать комбинаторы SKI в Haskell ... Я не уверен, что представляет ^M, но я думаю, что это как-то связано с нотацией vim при редактировании файла haskell.Кроме того, что обозначение типа функции eliminate?Спасибо

data Exp = Var String | App Exp Exp | Lam String Exp | S | K |I ^M
transform (Lam x y) = (eliminate x y)


eliminate x S = App K S^M
eliminate x K = App K K^M
eliminate x I = App K I^M
eliminate x (Var y)
                | x==y      = I
                | otherwise = (App K (Var y))

eliminate x (Lam y z) = eliminate x (eliminate y z)^M

eliminate x (App y z) = (App (App S (eliminate x y)) (eliminate x z))^M

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Как уже указывалось в некоторых комментариях, некоторые строки содержат конец строки DOS CRLF, некоторые - конец строки Unix LF. Чтобы исправить это только для Unix:

:%s/\r$//

Я ничего не могу сказать о Хаскеле.

0 голосов
/ 21 января 2019

У вас есть ^ M разрывы строк. Этот ответ говорит, что вы можете исправить это, выполнив :e ++ff=dos в vim. Но я не могу гарантировать, что я использую emacs.

Что вы имеете в виду, когда произносите обозначение типа ? Если вы имеете в виду тип подписи , то это

eliminate :: String -> Exp -> Exp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...