Alexander
интересная форма рекламы
Anonymous
t.me/folderarchive — канал, где бесплатно сливают платные полезные курсы и материалы.
Andrew
Самый большой WTF в Haskell за всю мою жизнь: wtf :: a -> (Num b => b) -> a wtf x y = xИ в ghci ghci> wtf 1 ("wat" + "man") 1
Ну так это правильно же. Из за ленивости вычислений. Тоже самое const42 a b = a const42 1 undefined > 1
Cheese
заходит @Foo в бар...
Dmitrii
Ну так это правильно же. Из за ленивости вычислений. Тоже самое const42 a b = a const42 1 undefined > 1
Это не ленивость вычисления, это ленивость тайпчекера, что более интересно. Например, const 1 ("wat" + "man") тупо не компилируется.
Vasiliy
я так понимаю, потому что тип второго аргумента должна определять сама функция wtf, а в случае с const тип аргумента определяет тот, кто её вызывает
Alexander
это только в ghci?
Alexander
или если компилять то тоже?
Dmitrii
или если компилять то тоже?
Такой код компилируется вполне ок. И если вызвать в ghci foo, то выведет 1 {-# LANGUAGE RankNTypes #-} wtf :: a -> (Num b => b) -> a wtf x _ = x foo :: Int foo = wtf 1 ("wat" + "man")
Dmitrii
Не скомпилируется, так как у вас ошибка. Надо вот так Prelude> const 1 ("asd" ++ "dsd") 1
Лол, ну так в этом и прикол, что компилируется, когда строки складываются через +, а не ++
Andrew
Все дошло до меня)
Aleksei (astynax)
+ тут, это не сложение списков, а чего угодно, реализующего Num. И "строки" тут не списки (не обязательно), т.к. OverloadedStrings повзоляетт записать в виде строкового литерала всё, что угодно, лишь бы это что-то умело IsString (да, капитанствую). Отсюда "foo" + "bar", это нечто, умеющее IsString и Num
Denis
Пардон за оффтопик, а как вы тут код форматируете? Бот какой работает?
Крылатый
Либо в три `
Крылатый
`
Крылатый
Хм.
Vasiliy
да, я тоже три написал :D
Крылатый
Я хотел три обернуть в шесть, не вышло
Крылатый
`
Крылатый
Даже с пробелами съедает.
Denis
хмм, я попробовал *zzz* - не заработало, и забил на markdown
Крылатый
Как ты это сделал?
Крылатый
`
Vasiliy
_подчёркивания_ вроде должны работать
Крылатый
zzz
Крылатый
подчёркивания тоже двойные
Aleksei (astynax)
двойные, да. Так что это Telegram flavoured not-so-Markdown
Vasiliy
ага, спасибо за информацию
Cheese
* = тип [*] = список типов
Cheese
ой, вопрос пропал
Denis
да я удалил, ибо пока писал, понял, какой бред написал
Cheese
вместо * лучше писать Type (http://hackage.haskell.org/package/base-4.10.0.0/docs/Data-Kind.html#t:Type), будет проще
Denis
я там запутался немного, и привидилось, что в одном месте тип описан типа как * -> * -> *, а в другом он же как * -> *
Denis
хмм, занятно: type * = * A backward-compatible (pre-GHC 8.0) synonym for Type
Alexander
двойные, да. Так что это Telegram flavoured not-so-Markdown
обычный подход ещё со времен email
Alexander
чего сразу мардавном звать
Cheese
сам Телеграм называет это маркдауном
Alexander
ok
Евгений
Чо наконец-таки ВПИЛИЛИ разметку?
Евгений
Раньше только code работал
Alexander
_разве_ ?
Aleksei (astynax)
впилили курсив и жир только. Никаких таблиц и прочего. Ссылки с кастомным текстом тоже не вставишь
Aleksei (astynax)
__разве__ надо
Donat
> Ссылки с кастомным текстом тоже не вставишь и слава б-гу!
Aleksei (astynax)
Вставляют же. Но через bot API
Aleksei (astynax)
Когда ведешь канальчик, то хочется встявлять "красивые ссылки", тем более, что техническая возможность есть. Но именно через интерфейс клиента этого сделать нельзя.
Aleksei (astynax)
Запретили бы в обычных комментах, а в "постах" то можно!
Donat
Вставляют же. Но через bot API
да? почему-то не встречал.
Aleksei (astynax)
Хмм. И правда, в недавних постах что-то не могу найти. Разве что тут: https://t.me/beardycast/2777 - я про ссылку в подвале
Cheese
кажется, был системный маркдаунбот, но куда-то делся
Cheese
а ботам можно пользоваться настоящими маркдауном и хтмлем https://core.telegram.org/bots/api#markdown-style
Alexander
TFW ты не бот
Alex
я смотрю вы не успокоитесь пока вам весь tex в разметку не всобачат :)
Alexander
+
Alexander
как без теха то?
Крылатый
Да.
Крылатый
ТеХ было бы очень хорошо.
Alexander
с другой стороны он и так читаемый
Alex
ТЕлеХрам
Крылатый
Храм по телевизору?
Крылатый
Надеюсь, церкви Омниссии?
Евгений
я смотрю вы не успокоитесь пока вам весь tex в разметку не всобачат :)
Зачем прям тех? Достаточно теховские вставки для формул и коммутативных диаграм
Зигохистоморфный
как сделать параметрически? data Notification = Error String | Info a deriving Show
Зигохистоморфный
Info a
Зигохистоморфный
сделал GADTs data Notification where Error :: String -> Notification Info :: forall a. a -> Notification
Oleg
сделал GADTs data Notification where Error :: String -> Notification Info :: forall a. a -> Notification
Что ты с ним теперь будешь делать без рестрикшенов?
Зигохистоморфный
вот я и думаю
Зигохистоморфный
вот мне надр теперь Info String
Зигохистоморфный
как быть?
Зигохистоморфный
а в другом месте у меня Info MyData