Size: a a a

2021 May 02

AF

Alexey Fedotov in Haskell
ну а где в яве замыкания/функции первого порядка?
источник

[

[BRM]White Rabbit in Haskell
их добавили уже
источник

AF

Alexey Fedotov in Haskell
да, но тогда-то
источник

[

[BRM]White Rabbit in Haskell
тогда не было
источник

JS

Jerzy Syrowiecki in Haskell
ФП — это не Схема. с такой же мотивацией можно сказать, что Яваскрипт основан на Хаскеле
источник

[

[BRM]White Rabbit in Haskell
да в принципе фп это даже не про фвп, это про чистоту. Не?
источник

AF

Alexey Fedotov in Haskell
Если изначальный план был "А с синтаксисом В", при этом в язык попала куча фич от А и совсем мало фич от В, (в джс классов-то не было даже при Обаме), то это что значит? Что перед нами изнасилованный А, а не упрощённый В
источник

JS

Jerzy Syrowiecki in Haskell
не
источник

[

[BRM]White Rabbit in Haskell
ну не так не
источник

AA

A64m AL256m qn<co... in Haskell
ну безтиповое фп это схема
источник

AA

A64m AL256m qn<co... in Haskell
строгое так уж точно
источник

JS

Jerzy Syrowiecki in Haskell
для ФП первично "functions as first-class objects", а ФВП и чистота — помогают этому принципу
источник

AA

A64m AL256m qn<co... in Haskell
но, конечно, у довода "яваскрипт - эта такая схема" есть всякие проблемы, типа TCO
источник

JS

Jerzy Syrowiecki in Haskell
без синтаксиса и списков как базового типа?
источник

AA

A64m AL256m qn<co... in Haskell
это детали! вот тко это важно
источник

JS

Jerzy Syrowiecki in Haskell
в Яваскрипте совсем капелька от ФП, и взята эта капелька из Схемы или Хаскеля — непонятно.

слухи про Схему ходили, и до сих пор ходят, но они не подтвержаются интервью с авторами
источник

JS

Jerzy Syrowiecki in Haskell
то есть принцип "рекурсия раньше циклов"?
источник

AF

Alexey Fedotov in Haskell
тко в джсе было. Правда не сразу, и его быстро выключили обратно навсегда.
источник

SD

Semyon Dubskikh in Haskell
Решал задания по хаскелю на stepik и вобщем нашёл вот такое решение в гугле (coins - просто список положительных чисел):

change :: (Ord a, Num a) => a -> [[a]]
change 0 = [[]]
change amount = [c:cs | c<-coins, c<=amount, cs<-change(amount-c)]

Наверняка уже это спрашивали, но надеюсь подскажите. Попробывал расписать на листочке рекусивные вызовы и вообщем ничего не понял. Вот например если coins = [2,3,7] и вызываю change 7. Как я понял должно быть что-то вроде этого:

change 7 = [2:cs ... cs <- change 5]
change 5 = [2:cs ... cs <- change 3]
change 3 = [2:cs ... cs <- change 1]
change 1 = []

Тогда получается должно быть:  [2:[2:[2:[]]]] - но компилятор ругается на такое выражение и в самом алгоритме списка [2,2,2] вообще нету, такое ощущение будто бы компилятор такой: "Так ладно тут у нас просто пустой список вернулся - значит убираем последнюю двойку и берём другой элемент из coins". Крч вообще не понимаю это, может есть какая-нибудь инфа про то как работает генератор списков, потому что сейчас я в край запутался
источник

Y

Yuuri in Haskell
> [2:[2:[2:[]]]] - но компилятор ругается на такое выражение
(2:(2:(2:[])))
источник