A64m
Что значит С?
(type equality) _c_oercions
Dmitry
Haskell non stop вторые сутки??
Dmitry
Не каждый Go-шник, наверное, такой накал типобезопасности выдержит
Dmitry
Горжусь нами!
IC
Позавчера ещё был миникурс по fancy types
Dmitry
А где это территориально?
IC
В понедельник по оптимизациям
Dmitry
Оптимизации я б посмотрел. Слайды будут в онлайне?
Dmitry
Ыыы
Dmitry
"Ясно, тайные сведения" (C)
IC
Академики из твига решили задвинуть за эмбедщину
IC
Хм.. на слайдах уже несколько раз есть inline-rust
IC
Но его вроде же ещё нет?
Ilya
в Фире != заменяется на ≠. как можно так ломать код?
Но ведь в хаскеле нет (стандартного) оператора !=
Artem
Это Template Haskell?
Cheese
Но ведь в хаскеле нет (стандартного) оператора !=
это не связано. речь о том, что замена символов — плохо
Cheese
Это Template Haskell?
если про [java|, то да
IC
Ждём теперь inline-haskell
A64m
я уже предлагал
A64m
можно же скомпилировать небольшой кусок хаскельного кода jhc в варианте без гц в си и потом этот сишный код вызвать ансейф вызовом (во время его выполнения гхц-ный гц не заработает) (шутка)
A64m
можно даже, наверное, накостылить квазиквотер, для "хаскеля-без-гц" внутри хаскеля вроде аналогов для си, явы и т.д.
IC
... предлагая - делай!
A64m
ну нет, я вам проблему с паузами в хаскеле в основном решил - детали уже сами дорабатывайте
Дмитрий
Люди, а не подскажете, что нового на фронте "программирование на уровне типов", как движется, что ожидается? А то я в курсе, что ресёрч идёт, но подробностей не знаю :(
A64m
есть кое-какие работы по зависимой корке и по унификации парсера для типов и значений, но заметных результатов пока нет
A64m
может в след. версии будет поудобнее сигнатуры для объявлений типов записывать, вроде такого type MonoTagged :: Type -> Type -> Type data MonoTagged t x = MonoTagged x type Id :: forall k. k -> k type family Id x where Id x = x type C :: (k -> Type) -> k -> Constraint class C a b where f :: a b но и это неготово еще
Зигохистоморфный
@A64m_qb0 никогда бы не подумал, что newtype можно прям внутри typeclass использовать class MLMonoid m where data T m :: * zero :: T m (<>) :: T m -> T m -> T m data AddMon = AddMon instance MLMonoid AddMon where newtype T AddMon = AM Int deriving (Num, Show) zero = 0 (<>) = (+)
A64m
ну это то же самое что newtype instance на топлевеле, что разновидность data instance
Зигохистоморфный
ну это же data family?
A64m
ну да
A64m
инстанс для дата фемели может быть ньютайпом
Зигохистоморфный
инстанс для дата фемели может быть ньютайпом
вот это для меня ново, я всегда думал, что там только конструктор типов должен быть
Зигохистоморфный
а не враппер
A64m
ну обычно везде где data там и newtype можно применять, в инстансах классов и т.д.
IC
There's no try (для которого нужен MonadCatch)
IC
Опять эти академики шипят продукты
Andrei
теперь точно успеха не избежать
IC
IC
Господи, да это же работающий хотсвоп!
IC
В .ghci можно что-то прописать, чтобы оно не смогло выжирать больше N гигов памяти?
NC
Стандартный параметр на размер хипа не сработает?
NC
Который -M
IC
Его можно в профиль забить чтобы не забывать писать каждый раз?
NC
Хотсвоп это круто, в GHC API давно была возможность такое сделать, только возиться много надо
NC
Я не пользуюсь профилем, поэтому не могу ответить. Можно в переменную окружения GHCRTS='-M128m' положить и будет для всех прог с хаскелльным рантаймом
IC
Мм
Anonymous
@cantstop будет жить. Поприветствуем!
Vladislav
Придумал я тут безупречный синтаксис для forall x -> … в тёрмах.
Vladislav
$([t| Int |])
Vladislav
Его достоинство в том, что он уже есть. А добавить нормальный можно потом.
Anonymous
boris будет жить. Поприветствуем!
Алексей
Надо записать где-нибудь. @int_index синтаксис придумывать не давать
Oleg
это вообще о чём?
Скорее всего, о завтипах
IC
$([t| Int |])
$[П|Int|]
Алексей
$[int_index| Int |]
Vladislav
это вообще о чём?
id :: forall x. x -> x id 5 == 5 id @Int 5 == 5 eid :: forall x -> x -> x eid 5 — error eid Int 5 == 5 Такой эксплиситный forall, для которого @ не нужен.
Vladislav
Только на этапе парсинга мы еще не знаем тип eid, и чтобы корректно распарсить Int в той позиции, нужно много engineering effort вложить в переделывание парсера GHC (чем я сейчас занимаюсь)
Cheese
это чтобы Хаскель догнал Идрис?
Vladislav
А в качестве временного варианта, пока парсер не готов, я просто осознал, что уже через TH можно было бы осуществить eid $([t| Int |])
Vladislav
Просто демонстрация forall x -> vs forall x.
Алексей
Вот это мне и не понятно
Vladislav
В отличие от обычного forall это обязательный аргумент, а visibility override @ не нужен.
Алексей
А. Передача типов в функцию как параметров
Vladimir
Зачем передавать типы в функцию как параметры, если можно объявить тайпкласс и к нему инстансы для разных типов? Или это не о том?
Vladislav
Здесь разница только в visibility, но не в relevance.
Vladislav
То есть в рантайме ничего не меняется, это все тот же стираемый forall.
Vladislav
Скорее актуально для функций, которые раньше Proxy принимали.
Vladislav
Сравнение с тайпклассами корректнее для foreach, а не forall.
Тык
таскать легкий, заходить с него на нормальный
Так и делаю, оч удобно - ноут ~1 кг и вся работа с собой.
Lev
а что сейчас на взлете, новый кабал или таки стак? что для нового проекта выбирать?