gelraen 24.07.2011 08:09 imax

Бляяя, ну почему вместо анонимных функций нельзя использовать обычные, обязательно нужно городить костыли типа fun(X) → needed_function(X) end ?

1. rtsome 24.07.2011 08:24

Обнлвления кода и релейтед проблемы.

2. rapture 24.07.2011 08:40 unknown

Потому что массив действий по другому хуй объявишь. А так \х → x+1 x/2 x-3

3. gelraenrtsome /1 24.07.2011 08:45 imax

можно подробнее?

4. gelraenrapture /2 24.07.2011 08:45 imax

што. я не распарсил

5. rapturegelraen /4 24.07.2011 08:57 unknown

Как ты вместо лямбды будешь использовать обычную функцию? Сначала ее объявишь, потом вызовешь?

6. gelraenrapture /5 24.07.2011 08:58 imax

сначала объявлю, а потом дам в качестве аргумента её имя (в ырланке для вызова функции надо указывать аргументы в скобках)

7. rapturegelraen /6 24.07.2011 09:01 unknown

В / анонимные функции существуют для того, чтобы так не делать. Если тебе приспичило, можно делать имя = \x = тело функции. Но нахуя, если можно писать меньше? А в ырланге тоже строгая типизация и монады?

8. rapturerapture /7 24.07.2011 09:03 unknown

ну в смысле имя = \x → тело функции

9. gelraenrapture /7 24.07.2011 09:04 imax

Я ебал городить анонимную функцию на 10 строк внтури другой функции. Типизации в ырланке нету вообще, насколько это возможно. Монад тоже нету.

10. rapturegelraen /9 24.07.2011 09:08 unknown

Хм, надо пофапать. А то меня эта хуйня с хуйпоймичем-монадами зойебала. Если функция используется один раз — сгородить, в принципе, можно. Это будет ничем не лучше, чем ты где-то в шапке ее городишь, а потом вызываешь. Ты в школе никогда при решении задач этапы, которые в уме вычислялись, не пропускал? Вот и тут где-то так же.

11. gelraenrapture /10 24.07.2011 09:11 imax

если писать её внутри — то получится жопа с выравниванием и читабельностью. Олсо, она всё равно наружу из модуля не экспортируется.

12. rapturegelraen /11 24.07.2011 09:14 unknown

Ну это смотря как написать. Кажется, тебя тошнило от сишечки, где ты при применении в коде функции вынужден был бежать по всем ебеням и искать ее объявления (ну да, можно было и написать название понятно, и редактор использовать, но суть не в этом). Мне лично кажется это синтаксическим сахаром, вполне удобным. Хотя вики говорит, что под лямбды такая хуйня подводиться, что мне не достать.

13. gelraenrapture /12 24.07.2011 09:16 imax

тут как раз беда в том, что опеределение именованой функции — это ни разу не синтаксический сахар для function_name = \x → expr. Анонимные и неанонимные функции получаются раздельными, ни разу не взаимозаменяемыми сущностями.

14. rapturegelraen /13 24.07.2011 09:19 unknown

Поясни.

15. gelraenrapture /14 24.07.2011 09:22 imax

function_name(X) → X*2 end. — это совсем не то же самое что и
Function_name = fun(X) → X*2 end.
Второй вариант можно скормить, например, lists:map() в качестве аргумента, а первый — нет. Олсо, имена переменных всегда начинаются с большой буквы.

16. rapturegelraen /15 24.07.2011 09:26 unknown

Схуялэ лямбду нельзя скормить map ?

17. gelraenrapture /16 24.07.2011 09:26 imax

лямбду — можно. именованую функцию — нельзя.

18. rapturegelraen /17 24.07.2011 09:28 unknown

именованную через лямбду?

19. gelraenrapture /18 24.07.2011 09:30 imax

нет, обычную объявленную с определёнными именем функцию. Т.е. в /15 первый вариант — это именованая функция function_name, а второй — это переменная Function_name, указывающая на анонимную функцию.

20. rapturegelraen /19 24.07.2011 09:35 unknown

Ты знаешь, я, конечно, не осилил, но судя по сигнатуре
ghci> :t map
map :: (a → b) → [a] → [b]
map принимает любую функцию, преобразующую a в b, к элементам списка и получает новый список.

21. gelraenrapture /20 24.07.2011 09:35 imax

дык я ж не на хаскель жалуюсь, а на ырланк.

22. rapturegelraen /21 24.07.2011 09:37 unknown

ну дык. хотя тут надо проверить

23. rapturerapture /22 24.07.2011 09:39 unknown

слышь, чо по ырлангу есть почитать и установить (желательно на г'усском и практически-ориентированное. ejabberd не предлагать)

24. gelraenrapture /23 24.07.2011 09:43 imax

почитать — http://www.erlang.org/doc/reference_manu...
http://www.erlang.org/course/course.html
http://thepiratebay.org/torrent/4678296/...
установить — lang/erlang (флажок JAVA можно снять, если у тебя нету jdk)

25. gelraen 24.07.2011 09:45 imax

АААА!!! оно наконец-то взлетело!!
Осталось приделать обработку результат отправки этой формы >_>

26. rapturegelraen /25 24.07.2011 09:47 unknown

Ай, молодца!

27. octocat 24.07.2011 11:07 emacsF934F973

Хехе, тоже не нравится? :)

28. rtsome 24.07.2011 11:17

Обесняю: ерланг — язык с динамической строгой типизацией. монады тоже есть.
Проблема ОПа решается просто: fun module:fname/1. но это не эквивалент лямбды.
Читайте исходники ёптыть.

29. rapturertsome /28 24.07.2011 11:27 unknown

> Читайте исходники ёптыть
А в документации этого нет?

30. rtsomerapture /29 24.07.2011 11:30

это есть. а некоторых вещей нет. например про параметризованные модули я не видел ничего ни в доках ни в 2х основных книжках.
да и вообще чтобы понять как надо писать.

31. gelraenrtsome /28 24.07.2011 11:45 imax

спасибо :) на такое оно говорит 'function not exported', что уже более понятно

Do you really want to delete ?