rapture 24.07.2011 09:53 unknown

ghci> add a b = a + b

<interactive>:1:9: parse error on input `='
Шо за нах????

1. werehuman 24.07.2011 09:53 Psi+

let add a b = a + b

2. gelraen 24.07.2011 09:53 imax

let же

3. rapturegelraen /2 24.07.2011 09:59 unknown

ghci> let doubleMe = \x → x*2
doubleMe :: Integer → Integer
ghci> doubleMe 1
2
it :: Integer
ghci> map doubleMe [1..10]
[2,4,6,8,10,12,14,16,18,20]
it :: [Integer]
ghci>
Так?

4. gelraenrapture /3 24.07.2011 10:00 imax

ага. а теперь то же самое, но с let doubleMe x = x*2

5. rapturegelraen /4 24.07.2011 10:03 unknown

ghci> let tripleMe x = x*3
tripleMe :: Num a => a → a
ghci> map tripleMe [1..10]
[3,6,9,12,15,18,21,24,27,30]
it :: [Integer]
ghci>

6. gelraenrapture /5 24.07.2011 10:03 imax

ну вот, неговно

7. rapturegelraen /6 24.07.2011 10:03 unknown

В то же время
ghci> map (let tripleMe x = x*3) [1..10]

<interactive>:1:26: parse error on input `)'

8. rapturerapture /7 24.07.2011 10:06 unknown

И в то же время
ghci> map ( let quartUs = \x → x * 4 ) [1..10]

<interactive>:1:33: parse error on input `)'
ghci> map ( quartUs = \x → x * 4 ) [1..10]

<interactive>:1:15: parse error on input `='
ghci>
Говно :(

9. werehumanrapture /8 24.07.2011 10:10 Psi+

это ты говно. Заебал писать хуйню и называть всё говном. Иди доки читай

10. rapturewerehuman /9 24.07.2011 10:12 unknown

Верихуйман, тебе никто не мешает меня заблеклистить и спать спокойно. Ты мне лучше скажи, в чем ошибка. А то мне от той хуйни про возврат второго аргумента аж икается.

11. jtootfrapture /10 24.07.2011 10:20

почитай про let expressions. в середине выражения они недопустимы (и не нужны)

12. rapturejtootf /11 24.07.2011 10:24 unknown

Про ненужны — а объявлять функцию где-то в теле другого выражения и потом ее использовать это нарушение областей видимости?
У меня, кстати, пока меня не заблеклистили, тут вопрос к авторитетному специалисту был... Мы тут с @werehuman где-то спорили на счет сигнатуры функций...

13. werehumanrapture /10 24.07.2011 10:24

Честно говоря, мне тоже непонятно, зачем в интерпретаторе надо писать let a = b вместо a = b, но это так. Это просто определение функции a. Всё остальное так же, как всегда.

14. werehumanrapture /12 24.07.2011 10:24

он не верит в каррирование

15. werehumanwerehuman /14 24.07.2011 10:26

а, нет. Он поверил в каррирование, но потом начал утверждать, что функция возвращает невесть что вместо другой функции.

16. rapturewerehuman /15 24.07.2011 10:29 unknown

Номер псто выложи, а то у меня с интернетом плохо

17. werehumanrapture /16 24.07.2011 10:31 Psi+

а ты, похоже, удалил этот псто

18. rapturewerehuman /17 24.07.2011 10:32 unknown

ШТО???? Нифига я не удалял.
P.S. и к чему тогда фраза "а, нет. Он поверил в каррирование,"? :)

19. jtootfwerehuman /13 24.07.2011 10:38 galois

потому что в интерпретаторе ты находишься в обработчике событий в монаде IO. у тебя нет там top level definition'ов, только локальные

20. jtootfrapture /12 24.07.2011 10:39 galois

объявить безымянную функцию ты можешь где угодно (с fix — даже рекурсивную). let даёт тебе возможность связать с ней имя в начале блока, where — в конце

21. rapturejtootf /19 24.07.2011 10:41 unknown

Кстати, а монады бывают вложенными? Ну то есть IO в IO

22. jtootfrapture /21 24.07.2011 10:42 galois

бывают. кроме IO. IO в стеке монад всегда должна находиться последней. собственно, это единственная волшебная монада в Haskell

23. jtootfrapture /21 24.07.2011 10:43 galois

вложение выполняется с помощью монадических трасформеров. простая композиция монад (m (n a)) или (n (m a)) не обязана быть монадой

24. rapturejtootf /22 24.07.2011 10:57 unknown

Нашел http://psto.net/gones < http://psto.net/gones#25>

25. rapturerapture /24 24.07.2011 11:02 unknown

Блджад, он там имел ввиду, что функция возвращает функцию. А я что кортеж или что-то типа того. Ладно, ты выиграл.

26. utros 24.07.2011 11:45 eoranged

Мне кажется или там ни разу не равно должно быть, в объявлении-то функции.

27. gelraenutros /26 24.07.2011 11:46 imax

тебе кажется

28. utrosgelraen /27 24.07.2011 11:48 eoranged

И точно. Нихуя уже не помню >_<

29. raptureutros /26 24.07.2011 11:55 unknown

Кажется. Там в ghci должно быть let add a b =... Это спецфичный синтаксис. А в хаскель функции и объявляются через равно.

Do you really want to delete ?