Cheese
и не сначала, а раньше, чем (.)
Nikolay
стало понятнее. спасибо
Anonymous
Композицию в одном утверждении удобнее всего польз. без аргументов. Иначе нужны () или $
Aleksei (astynax)
Композиция всегда без аргументов. Просто применение может быть прямо по месту, а может не быть :) (позанудствовал)
Cheese
Композицию в одном утверждении удобнее всего польз. без аргументов. Иначе нужны () или $
есть рекомендации (в том числе в HLint), что лучше писать f . g $ h x, чем f $ g $ h x
Anonymous
В общем, ф отдельно, арг. отдельно. Так красивше
Cheese
let fgh = f . g . h in fgh x , во
стало длиннее
Anonymous
Да и читабельнее ведь. Ежу понятнее
Aleksei (astynax)
С чего читабельнее то? Ещё и имя придётся придумывать для функции, которая нужна ровно один раз
Alexander
let fgh x = f $ g $ h x in fgh x
Alexander
а вообще, point-free без причины — признак дурачины
кана
Ну в этом кейсе нет причин его не делать
Alexander
а в этом кейсе (записать f (g (h x)) )его и не было
Alexander
а предалагают ради point-free сделать целую новую функцию
Слава
Если что, люди не так давно жили и росли не только без интернета, но и без (любых) телефонов. Будем надеяться, что это - непродолжительный экскурс в прошлое. Такой паровозик в тематическом парке развлечений.
Не столь давно они жили ещё без тойот у каждого васи, без айфонов у каждой маньки, без перфораторов, болгарок и штроборезов, без автомобильных пробок и ТРЦ. При том, в 98 году интернет уже был, а всего перечисленного выше - массово не было. Но начали почему-то с интернета, вместо того, чтобы например массово пересадить моих дорогих сограждан с автомобилей обратно на трамвай - где им самое место.
Aliester
потому что машиной сложно разжечь революцию
Aliester
а интернетом можно
Aliester
почему комми выиграли? в тому числе потому что контролировали точки связи
Aliester
поскольку эти интернет контролировать не могут
Aliester
можно его запретить
A64m
да тут не в революции дело
Aliester
коммунисты
Vladimir
Ну как. Один из пунктов -- монополия на СМИ. Этого правительство активно добивается уже не первый год.
Nikolay
вопросик. пишу :t (>7) и мне в ответ (>7) :: (Ord a, Num a) => a -> Bool
Nikolay
и я бы ожидал для :t (>'f')
Nikolay
(>'f') :: (Ord a, Char a) => a -> Bool
Nikolay
но по факту (>'f') :: Char -> Bool
Nikolay
почему?
Andrey
Char тип, Num - класс типов
Nikolay
а можно как-то это проверить? т.е чтобы мне набрать какую-то команду и увидеть, что Char - это тип, а Num - класс типов
Andrey
:i Char
undefined
Потому что Prelude> :t 7 7 :: Num p => p Prelude> :t 'f' 'f' :: Char
кана
почему?
смотри, терм 'f' имеет всегда один тип
кана
а терм 2 полиморфный (ну не очень хорошое слово тут на самом деле)
кана
он перегружен для разных типов
кана
точнее, он может иметь любой тип, для которого есть инстанс Num
кана
если ты точно укажешь тип числа, то будет как с Char > :t (> (2 :: Int)) (> 2) :: Int -> Bool
Nikolay
спасибо
Евгений
почему комми выиграли? в тому числе потому что контролировали точки связи
Потому 4 года вели пропаганду в армии (а на заводах вообще лет 15), на самом деле. К моменту социального кризиса они смогли парализовать экономику постоянными стачками, а значительная часть армии встала на сторону протестующих. И Ельцин в 93'ем уничтожил советскую власть только благодаря тому, что демократы контролировали армию. Вон щас во Франции большая часть страны на стороне протестующих, но это ни к чему не приводит, потому что армия лояльна правящему классу.
NC
Я продолжаю бомбить, теперь ни на гугл не зайти, ни из кеша никса пакеты выкачать, ни daedalus кошель скачать, сколько то можно
Cheese
почему?
символьные литералы мономорфны (Char), числовые — полиформны (Num a => a)
NC
вроде РКН бомбит, не?
хех, люблю однозначный естественный язык
NC
В суд подавать. Вполне реально, ИМХО, их задудосить исками.
донатил в фонд юристам, что счас иски готовят против ркн, самому мне судиться с ними не хочется
Aliester
каждый кто знает Хаскель - враг народа
NC
Хаскель был использован, чтобы сделать хотя бы одну крипту, итого это инструмент террористов для нарушения конституционного строя РФ и дестабилизации единого платёжного инструмента на территории РФ!
Andrey
а ещё историю про тор, арест, суд и тюрьму помнишь?
NC
Какую из, хех?
Andrey
про парня, который контрибьютил хаскель в один из дистрибутивов и держал у себя дома ноду тора
Andrey
и его по айпи вычислили, в общем
Евгений
про парня, который контрибьютил хаскель в один из дистрибутивов и держал у себя дома ноду тора
Вот, хаскелистов не просто кибербулят, это уже инстуциональное насилие надывается!
NC
а что за фонд?
https://t.me/pchikov
NC
Там в закреплённом сообщении
Andrey
http://www.opennet.ru/opennews/art.shtml?num=46391
Anonymous
РКН (террористическая организация разрешённая на территории РФ)
Anonymous
https://twitter.com/roscomnadzor/status/988011796152946688
Nikita
Nikolay
Подскажите
Nikolay
class Eq2 a where (===) :: a-> a-> Bool instance Eq2 Bool where True === True = True False === False = True _ === _ = False instance (Eq2 a,Eq2 b) => Eq2 (a,b) where p1 === p2 = fst p1 == fst p2 && snd p1 === snd p2
Nikolay
для пар я не правильно записал
Nikolay
там нужно ===, а не ==, но почему я не до конца понимаю
Nikolay
как написать так инстанс, чтобы работало для ==
кана
там нужно ===, а не ==, но почему я не до конца понимаю
потому что у тебя же в Eq2 именно (===)
Nikolay
я бы хотел для реализации === использовать контекст Eq и ==
Artem
я бы хотел для реализации === использовать контекст Eq и ==
Так используй, контекст-то указан именно Eq2
Nikolay
(Eq2 a,Eq2 b) => Eq (a,b)
Nikolay
?
кана
(Eq2 a,Eq2 b) => Eq (a,b)
ты же наоборот хочешь
Nikolay
instance (Eq a,Eq b) => Eq2 (a,b) where p1 === p2 = fst p1 == fst p2
кана
да