В / анонимные функции существуют для того, чтобы так не делать. Если тебе приспичило, можно делать имя = \x = тело функции. Но нахуя, если можно писать меньше? А в ырланге тоже строгая типизация и монады?
Хм, надо пофапать. А то меня эта хуйня с хуйпоймичем-монадами зойебала. Если функция используется один раз — сгородить, в принципе, можно. Это будет ничем не лучше, чем ты где-то в шапке ее городишь, а потом вызываешь. Ты в школе никогда при решении задач этапы, которые в уме вычислялись, не пропускал? Вот и тут где-то так же.
Ну это смотря как написать. Кажется, тебя тошнило от сишечки, где ты при применении в коде функции вынужден был бежать по всем ебеням и искать ее объявления (ну да, можно было и написать название понятно, и редактор использовать, но суть не в этом). Мне лично кажется это синтаксическим сахаром, вполне удобным. Хотя вики говорит, что под лямбды такая хуйня подводиться, что мне не достать.
тут как раз беда в том, что опеределение именованой функции — это ни разу не синтаксический сахар для function_name = \x → expr. Анонимные и неанонимные функции получаются раздельными, ни разу не взаимозаменяемыми сущностями.
function_name(X) → X*2 end. — это совсем не то же самое что и Function_name = fun(X) → X*2 end. Второй вариант можно скормить, например, lists:map() в качестве аргумента, а первый — нет. Олсо, имена переменных всегда начинаются с большой буквы.
нет, обычную объявленную с определёнными именем функцию. Т.е. в /15 первый вариант — это именованая функция function_name, а второй — это переменная Function_name, указывающая на анонимную функцию.
Ты знаешь, я, конечно, не осилил, но судя по сигнатуре ghci> :t map map :: (a → b) → [a] → [b] map принимает любую функцию, преобразующую a в b, к элементам списка и получает новый список.
Обесняю: ерланг — язык с динамической строгой типизацией. монады тоже есть. Проблема ОПа решается просто: fun module:fname/1. но это не эквивалент лямбды. Читайте исходники ёптыть.
это есть. а некоторых вещей нет. например про параметризованные модули я не видел ничего ни в доках ни в 2х основных книжках. да и вообще чтобы понять как надо писать.
Обнлвления кода и релейтед проблемы.
Потому что массив действий по другому хуй объявишь. А так \х → x+1 x/2 x-3
можно подробнее?
што. я не распарсил
Как ты вместо лямбды будешь использовать обычную функцию? Сначала ее объявишь, потом вызовешь?
сначала объявлю, а потом дам в качестве аргумента её имя (в ырланке для вызова функции надо указывать аргументы в скобках)
В / анонимные функции существуют для того, чтобы так не делать. Если тебе приспичило, можно делать имя = \x = тело функции. Но нахуя, если можно писать меньше? А в ырланге тоже строгая типизация и монады?
ну в смысле имя = \x → тело функции
Я ебал городить анонимную функцию на 10 строк внтури другой функции. Типизации в ырланке нету вообще, насколько это возможно. Монад тоже нету.
Хм, надо пофапать. А то меня эта хуйня с хуйпоймичем-монадами зойебала. Если функция используется один раз — сгородить, в принципе, можно. Это будет ничем не лучше, чем ты где-то в шапке ее городишь, а потом вызываешь. Ты в школе никогда при решении задач этапы, которые в уме вычислялись, не пропускал? Вот и тут где-то так же.
если писать её внутри — то получится жопа с выравниванием и читабельностью. Олсо, она всё равно наружу из модуля не экспортируется.
Ну это смотря как написать. Кажется, тебя тошнило от сишечки, где ты при применении в коде функции вынужден был бежать по всем ебеням и искать ее объявления (ну да, можно было и написать название понятно, и редактор использовать, но суть не в этом). Мне лично кажется это синтаксическим сахаром, вполне удобным. Хотя вики говорит, что под лямбды такая хуйня подводиться, что мне не достать.
тут как раз беда в том, что опеределение именованой функции — это ни разу не синтаксический сахар для function_name = \x → expr. Анонимные и неанонимные функции получаются раздельными, ни разу не взаимозаменяемыми сущностями.
Поясни.
function_name(X) → X*2 end. — это совсем не то же самое что и
Function_name = fun(X) → X*2 end.
Второй вариант можно скормить, например, lists:map() в качестве аргумента, а первый — нет. Олсо, имена переменных всегда начинаются с большой буквы.
Схуялэ лямбду нельзя скормить map ?
лямбду — можно. именованую функцию — нельзя.
именованную через лямбду?
нет, обычную объявленную с определёнными именем функцию. Т.е. в /15 первый вариант — это именованая функция function_name, а второй — это переменная Function_name, указывающая на анонимную функцию.
Ты знаешь, я, конечно, не осилил, но судя по сигнатуре
ghci> :t map
map :: (a → b) → [a] → [b]
map принимает любую функцию, преобразующую a в b, к элементам списка и получает новый список.
дык я ж не на хаскель жалуюсь, а на ырланк.
ну дык. хотя тут надо проверить
слышь, чо по ырлангу есть почитать и установить (желательно на г'усском и практически-ориентированное. ejabberd не предлагать)
почитать — http://www.erlang.org/doc/reference_manu...
http://www.erlang.org/course/course.html
http://thepiratebay.org/torrent/4678296/...
установить — lang/erlang (флажок JAVA можно снять, если у тебя нету jdk)
АААА!!! оно наконец-то взлетело!!
Осталось приделать обработку результат отправки этой формы >_>
Ай, молодца!
Хехе, тоже не нравится? :)
Обесняю: ерланг — язык с динамической строгой типизацией. монады тоже есть.
Проблема ОПа решается просто: fun module:fname/1. но это не эквивалент лямбды.
Читайте исходники ёптыть.
> Читайте исходники ёптыть
А в документации этого нет?
это есть. а некоторых вещей нет. например про параметризованные модули я не видел ничего ни в доках ни в 2х основных книжках.
да и вообще чтобы понять как надо писать.
спасибо :) на такое оно говорит 'function not exported', что уже более понятно