Size: a a a

Elm Lang сообщество разработчиков

2017 November 01

к

кана in Elm Lang сообщество разработчиков
Яuby
Rиby

там много вариантов не попало в график
источник

NK

ID:154127650 in Elm Lang сообщество разработчиков
Zheka Kozlov
Кто знает, почему в Elm компилируется такое:
x : List List Int
x = Debug.crash ""
Kind check не производится. Issue даже есть.
источник

NK

ID:154127650 in Elm Lang сообщество разработчиков
Типы они решили пока(?) не чинить, судя по всему.
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Но у List то всяко * -> *, так что второй параметр точно лишний
Если для некоторыйх параметров для мервой звездочки, вторая сама станет * -> *, то тип может использоваться с разным количеством аргументов. Аналогично функции id.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
ЯННП
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
Ну функции id один аргумент. Но id (+) 2 4 вполне нормально работает. Возможно, и тип такой можно сконструировать (сходу из repl не смог, но возможность допускаю).
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
id и always в Эльме подхаченные
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
А в Хаскеле у них поликайндовый тип
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
Mike Potanin
Ну функции id один аргумент. Но id (+) 2 4 вполне нормально работает. Возможно, и тип такой можно сконструировать (сходу из repl не смог, но возможность допускаю).
потому что id (+) = (+)?
источник

MP

Mike Potanin in Elm Lang сообщество разработчиков
ID:351615646
потому что id (+) = (+)?
Ну да. С типами в Haskell такое не проходит, но в Idris сделать можно.
Idris> the (id List Int) [1,2,3]
[1, 2, 3] : List Int
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
почему не проходит? твой пример работает в хаскеле
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
у нас просто в типе idₐ₀ : ∀ a₀ . a₀ → a₀ параметр a₀ становится a₀ = ∀ a₁ . a₁ → a₁ → a₁ и мы получаем idₐ₀ : ∀ a₁ . (a₁ → a₁ → a₁) → a₁ → a₁ → a₁
источник
2017 November 02

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В хаскеле просто реальный тип у id посложнее
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
(->) a b, это просто тип с кайндом * -> * -> *, А у (+), тип (->) a ((->) a a), который вообще * -> *
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Т.о. от id требуется лишь уметь принимать k -> *, где k - любой кайнд. Это вполне кодируется на Хаскеле
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
(->) a b, это просто тип с кайндом * -> * -> *, А у (+), тип (->) a ((->) a a), который вообще * -> *
у (→) a b кайнд ★ → ★ → ★? серьезно?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Джва  параметра у типа (a -> b) - две звёздочки, третья - сам применённый тип
источник

Aq

A64m AL256m qn[cores] in Elm Lang сообщество разработчиков
так тут оба уже применены
источник

NK

ID:351615646 in Elm Lang сообщество разработчиков
A64m AL256m qn[cores]
так тут оба уже применены
^
источник