Сигнатура функции лямбда-нотации не компилируется в gh c, но работает в интерпретаторе (ghci) - PullRequest
0 голосов
/ 01 августа 2020

Сигнатура функции лямбда-нотации не компилируется в gh c, но в интерпретаторе (ghci) все в порядке. Я использую стек на ma c osx. gh c версия: 8.8.3

\x y -> 2*x + y :: Num a => a -> a -> a 
valNum1 = \x y -> 2*x + y 

1 Ответ

4 голосов
/ 01 августа 2020

Проблема в том, что вы определяете сигнатуру лямбда-выражения, но это лямбда-выражение является выражением , а не объявлением. Если вы хотите указать подпись, вы указываете это как подпись valNum1:

valNum1 <b>:: Num a => a -> a -> a</b>
valNum1 = \x y -> 2*x + y

Однако удобнее указывать переменные в заголовке valNum1:

valNum1 :: Num a => a -> a -> a
valNum1 <b>x y</b> = 2*x + y

или можно написать это как вариант без баллов:

valNum1 :: Num a => a -> a -> a
valNum1 = <b>(+) . (2 *)</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...