
Denis
03.08.2017
13:17:53
оу) https://github.com/mmirman/ImperativeHaskell/blob/master/Main.hs

Dmitry
03.08.2017
13:25:10

Denis
03.08.2017
13:26:52
вопрос
есть ли у хаскелл такой список? https://github.com/denysdovhan/wtfjs один js девелопер сказал что просто я не знаю на должном уровне хаскелл и что просто я не могу найти такой список
ну и что Диль не шарит что говорит https://twitter.com/smdiehl/status/893039690487648257

Google

? animufag ?
03.08.2017
13:32:42

Denis
03.08.2017
13:33:09

? animufag ?
03.08.2017
13:33:28
нет, я не знаю

kana
03.08.2017
13:35:12
x :: Void
x = undefined

Denis
03.08.2017
13:35:55

Даниил
03.08.2017
13:36:13
Haskell WTF:
-- value of an empty type
x :: Void
x = undefined
-- fmap vs map
fmap (+ 1) [1, 2, 3]
map (+ 1) [1, 2, 3]
-- head & tail are unsafe
head :: [a] -> a

Denis
03.08.2017
13:36:59

? animufag ?
03.08.2017
13:36:59
да, столько unsafe опраций
эксепшоны какие-то
String = [Char]

Даниил
03.08.2017
13:37:35

? animufag ?
03.08.2017
13:38:38
а, ещё раньше были шутки про то что монада не аппликатив. сейчас же тоже полно такого осталось в прелюде?

Google

Даниил
03.08.2017
13:39:48
String = [Char]
расширение есть которое строковые литералы делоет не [Char] а Text вроде

kana
03.08.2017
13:40:07
Ну и моноид не полугруппа

Dmitry
03.08.2017
13:40:51
Самый большой WTF в Haskell за всю мою жизнь:
wtf :: a -> (Num b => b) -> a
wtf x y = xИ в ghci
ghci> wtf 1 ("wat" + "man")
1

? animufag ?
03.08.2017
13:40:56

Даниил
03.08.2017
13:41:04
да, уже прочитал

? animufag ?
03.08.2017
13:41:20

Aleksey
03.08.2017
13:41:36
Уже есть

kana
03.08.2017
13:41:45
Есть

Aleksey
03.08.2017
13:42:15
Но моноид всё ещё полугруппу не требует - чтобы не сломать ничего
Многие "WAT" в хаскеле потому, что по другому было нельзя. А в JS - потому что так вышло
> length ("foo", "bar")
1
Это не WAT, например

kana
03.08.2017
13:47:27
Ох лол, а почему так? Как вообще это работает, если в прелюдии length принимает массив
А, еет
Фолдабл

Даниил
03.08.2017
13:47:54

kana
03.08.2017
13:48:30
Думал про массив, пишу строку

Denis
03.08.2017
13:48:34

kana
03.08.2017
13:49:45
Отвечай, не читай до конца

Google

Aleksey
03.08.2017
13:51:59
Пара ((a, b)) - ни разу не массив
Это всё питон подгадил в головы неокрепшие. Это после питона "котрежи, это такие массивы, только побыстрее, но длину не меняют"
Если сделать
data Pair a = Pair a a deriving (Foldable)
то будет
> length $ Pair 1 2
2

kana
03.08.2017
13:55:44
Да какой питон, что ты несешь. Я ввожу в хугл, вижу массив, пишу сюда. Потом открываю прелюдию, вижу там фолдабл, пишу об этом тоже. После этого нужно мне сказать об этом ещё раз, а потом и сказать, что я путаю пары и массивы

Denis
03.08.2017
13:59:32
что я делаю не так?
class Foldable t where

? animufag ?
03.08.2017
14:00:10

Denis
03.08.2017
14:00:16
и вообще пользуйтесь stackage

Vasiliy
03.08.2017
14:00:18
ещё прикол: let five = 2 + 2 where 2 + 2 = 5

kana
03.08.2017
14:00:24
Мне блять еще раз повторить?
Да какой питон, что ты несешь. Я ввожу в хугл, вижу массив, пишу сюда. Потом открываю прелюдию, вижу там фолдабл, пишу об этом тоже. После этого нужно мне сказать об этом ещё раз, а потом и сказать, что я путаю пары и массивы
что я делаю не так?
Ох лол, а почему так? Как вообще это работает, если в прелюдии length принимает массив
А, еет
Фолдабл
Я же говорю, отвечай не читай

Vasiliy
03.08.2017
14:00:49
но это всё слабовато, конечно, по сравнению с js

Google

? animufag ?
03.08.2017
14:00:57
да успокойся

Vasiliy
03.08.2017
14:01:27
> {} + {}
'[object Object][object Object]'
> {} + {};
NaN

Denis
03.08.2017
14:01:40

kana
03.08.2017
14:01:56
Слушай, ты что, издеваешься?

? animufag ?
03.08.2017
14:02:00
вообще тут все имплаят что у тебя локально развёрнут самый свежий хугл

kana
03.08.2017
14:02:20
Не может человек, прочитав 3 раза, не понять, что он прочитал

Leonid
03.08.2017
14:03:02
подержи пиво

Aleksey
03.08.2017
14:05:09

Yuriy
03.08.2017
14:05:16
и Foldable пары, и {} + {} объясняются одинаково: если залезть на шкаф и встать на голову, то становится всё очевидно

? animufag ?
03.08.2017
14:05:40

Yuriy
03.08.2017
14:05:53

Aleksey
03.08.2017
14:06:05
эт да

? animufag ?
03.08.2017
14:07:20
http://hackage.haskell.org/package/base-4.6.0.1/docs/Prelude.html#v:length

Denis
03.08.2017
14:08:32
а постарее нельзя?

Aleksey
03.08.2017
14:08:40
Да даже если перейти по ссылке в хугле, то будет
length :: t a -> Int внутри class Foldable
Вот показывает хугл неактуальный тип: https://www.haskell.org/hoogle/?hoogle=length

kana
03.08.2017
14:09:26
это какой-то пиздец. Я же ровно об этом же написал 10 минут назад

Denis
03.08.2017
14:09:32

Aleksey
03.08.2017
14:10:00
http://hayoo.fh-wedel.de/?query=length
Хаю лучше работает, кароч

Google

? animufag ?
03.08.2017
14:10:35

Aleksey
03.08.2017
14:11:25

Index
03.08.2017
14:12:05
Педагогическая ошибка Хаскеля в том, что у кортежей симметричный синтаксис, но несимметричная семантика

? animufag ?
03.08.2017
14:12:53

Index
03.08.2017
14:12:59
Если бы пара выглядела, например, как
b `AnnotatedWith` a
а не (a, b),
то никто бы не возмущался

Aleksey
03.08.2017
14:15:51
Вот за Either лично мне обидно: все его норовят использовать для обработки ошибок, хотя есть Except

? animufag ?
03.08.2017
14:17:01
А ещё мне кажется он ущемляет левшей
Ну или точнее его инстансы

Misha
03.08.2017
14:21:53
ну так потому что Either намного проще

Alexander
03.08.2017
14:28:00
@astynax Except жирный больно

Aleksey
03.08.2017
14:29:36
ээээ Except, это newtype над Either же
только с явным разделением на throwError и pure

Misha
03.08.2017
14:32:54
я совершенно честно не знал
ну и неудивительно, в общем-то, учитывая статьи типа {8,9,10} ways of handling errors in Haskell и вот это все
с точки зрения освоения это вообще наверное самая слабая и мутная часть языка и библиотек