avshap: (Default)
avshap ([personal profile] avshap) wrote2008-01-18 12:04 pm

Про срачЪ в SF&F.FANDOM

Повторюсь. Функциональное программирование оно может быть и православненько математичненко, но ебануто на голову ещё больше чем МЭК61131-3 и релейные диаграммы.

[identity profile] oal.livejournal.com 2008-01-18 03:04 pm (UTC)(link)
Не слушай скобочко-фага, оно еще непонятнее простому инжинеру-электронщику из-за префиксной нотации. ;)

Как говорит мой шеф, есть два типа компьютерщиков. Одни оперируют битами и байтами, вторые — всякими абстракциями.

Но во втором подноде нет ничего сложного. Вот как оно выглядит чуть в другом синтаксисе:

squareArray array = map (square) array
where square x = x*x

Ну или

squareArray array = map (\x -> x*x) array

А теперь бы делаем point-free, но это уже чуточку более сильное колдунство:

squareArray = map (\x -> x*x)

Ну и что тут сложного? ;)

Вообще-то то, что мы тут назвали array, это такой список. Или не список. А дерево. Или действительно массив. Но это в данном случае роли не играет.

[identity profile] khathi.livejournal.com 2008-01-18 03:20 pm (UTC)(link)
Ты ещё скажи, что Хаскель проще Лиспа. ;)

[identity profile] oal.livejournal.com 2008-01-18 05:42 pm (UTC)(link)
В этих аспектах синтаксиса — проще. Портят все монады. :)

Или ты хочешь холивор? Тогда я щаз сделаю поцт в другом месте, там и посмотрим. :)

[identity profile] khathi.livejournal.com 2008-01-18 05:45 pm (UTC)(link)
Зато в хаскеле нет лисповских макросов, поскольку нет С-выражений. ;)

[identity profile] oal.livejournal.com 2008-01-18 05:59 pm (UTC)(link)
Давай переползем сюда.

[identity profile] khathi.livejournal.com 2008-01-18 06:08 pm (UTC)(link)
Ну, можно, но это уж как хозяин решит.

[identity profile] khathi.livejournal.com 2008-01-18 03:24 pm (UTC)(link)
Кстати, point-free-вариант как раз требует понимания лямбда-исчисления чуть более, чем наполовину, и потому таки более "математичен". ;)

[identity profile] oal.livejournal.com 2008-01-18 05:45 pm (UTC)(link)
Для point-free достаточно для начала понимания «одинаковые параметры с двух сторон мы опускаем». То, что это у нас получается комбинирование комбинаторов и прочие извращения с приведением к point-free — это уже потом.

Лямбда же в том объеме, чтобы врубиться в «"\x -> x*x" это тоже самое, что "square x = x*x", только без "square"» — это всего-навсего концепция анонимной функции. Без всяких гвоздей вроде бета-редукции. :)

[identity profile] khathi.livejournal.com 2008-01-18 05:49 pm (UTC)(link)
Бета-редукция -- это вообще основа основ, таблица умножения, так сказать. Те же Абельсон и Сассман её дают во второй же лекции вообще не называя её никак, под личиной "методов применения функций". ;)

[identity profile] oal.livejournal.com 2008-01-18 05:59 pm (UTC)(link)
Гы. Я лох.