Как стать автором
Обновить

Комментарии 18

Неплохая статья для введения в F#, мне понравилось. Правда когда я вижу код для чисел Фибоначчи, сердце кровью обливается :)
Ох черт — 3 копейки
1)let (f,s) = (3,2) — тоже pattern matching ( по-русски — сопоставление образцу). Форма match — лиш частный случай, pattern matching же используется повсеместно.
2) Unions — такого типа данных в F# нет, есть Discriminated unions — это очень неплохая реализация идеи АДТ (алгебраические типы данных). Делаю поправку тк это люди программирующие на C/C++ могут не понять смысла этого типа данных и запутаться. Сами DU — великолепная вещь, чего только стоит стандартный Option против TryDoSomething.
3)Ну дайте нормальный пример для фибоначи — то что вы показали просто страх какой-то :) MSDN вариант на Seq

let fib = Seq.unfold (fun state ->Some(fst state + snd state, (snd state, fst state + snd state))) (1,1)
fib |> Seq.take 20


получите 20 первых чисел
ну почему страх? )
нефункциональщик зато сразу видит схожую структуру с числами фиббоначи на других языках, а не language-specific вещей, сразу несколько реализаций чисел фибоначчи тянет на отдельную статью с разбором полетов, а тут только начало )
Страх, страх — особенно страшна предложенная реализация тк стек будет жрать как невсебя :) ну а вообще можно написать что реализация простейшая и на самом деле надо вот так :)
Мысль в том чтобы учится правильно с самого начала, а не писать костыли на коленке, а потом ломать свое-же сознание при попытке сделать вещь правильно.
+ пример MSDN показывает какую адову часть работы готов взять на себя F# за вас — просчитываете любую другую последовательность — замените формулу в lambda и вуоля — готовый код без багов в реализации рекурсии готов :)
Для меня, как нефунциональщика, приведенный в статье пример гораздо понятнее, чем приведенный вами в комментариях. Наверно, стоит сделать в статье сноску, почему так не следует писать, и что это приведено лишь для иллюстрации и наглядности для, так сказать, введения в язык. А после обретения навыков надо писать уже по-другому.
угу, почему то везде про ПМ говорят только в контексте оператора match. А можно ведь например так написать:

let second (x, y) = y // разбор кортежа

let getValueFromOption (Some value) = value // разбор discriminated union'а
Спасибо за поправки. Насчет 3-го пункта: просто я пока не рассказывал про последовательности, вот и получился такой код.
Язык стоило назвать H#
Вы имеете ввиду Хаскель? Нет, им здесь и не пахнет, это мультипарадигменный язык.
Скорее OCaml#
Спасибо, интересно.
Очень понравилась подборка рисунков :)
Небольшая опечатка. Вместо "(λx.x - 5) 5 = 6 - 5 = 1" должно быть
"(λx.x - 5) 6 = 6 - 5 = 1".

За статью спасибо.
Уффф, а я уж думал это я тупой и никак не въеду, почему там именно 5, хотя по всей логике вещей должно быть 6 ))
Learn you a F# for great good :)
Всем большое спасибо за критику и за все остальное. Если есть еще какие-нибудь пожелания, то я всегда готов выслушать.
НЛО прилетело и опубликовало эту надпись здесь
+ хорошая вводная по F# статья на fprog: Введение в F#
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории