Anonymous
о, вроде норм работает, оставлю так пока
Anonymous
если ничего получше нет
Anonymous
мне сейчас задачка прилетела забавная
Anonymous
может я просто ничего не понимаю, но показалась странной задача написать подможество API на js’e, когда у них там уже Servant
Anonymous
какой в этом может быть смысл? серьезно, это не риторический вопрос (:
Evgeniy
Servant смотрел красота😊но дскрипт нафиг нужен?
Evgeniy
Только auth не разобрался пока😊Я думаю пока
Нурлан
Может кто подскажет: имеется
`type DIM0 = Z
type DIM1 = DIM0 :. Int'
компилятор соглашается принять Exp DIM1, но не хочет брать `Exp (Z :. Int)` как тип. В чем тут дело?
Vladislav
Научитесь уже вместо "компилятор не соглашается" просто копировать сообщение об ошибке
Нурлан
[1 of 1] Compiling Main ( examples.hs, interpreted )
examples.hs:19:26:
Illegal operator ‘:.’ in type ‘Z :. Int’
Use TypeOperators to allow operators in types
Vladislav
Тебе в ошибке написано, что делать.
Vladislav
Попробуй его прочитать.
Vladislav
Нужно включить расширение TypeOperators.
Vladislav
Если в файле, то {-# LANGUAGE TypeOperators #-}
Vladislav
Если в ghci, то :set -XTypeOperators
Anonymous
:. это вообще что?
Нурлан
Anonymous
в самом верху
Нурлан
Работает !!!
Anonymous
🤔
Anonymous
Anonymous
Vladislav
Какие четыре точки?
Evgeniy
Anonymous
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeOperators #-}
Anonymous
Anonymous
как бы мне это понять все не за 5 лет
Anonymous
не, пара простых расширений там есть
Anonymous
с которыми можно за час-два познакомиться)
Anonymous
это из тутора по Servant
Anonymous
http://haskell-servant.readthedocs.io/en/stable/tutorial/Server.html
Anonymous
что вы пишете обычно в default-extensions?
Anonymous
точнее вопрос: default-extesions in stack.yml vs in-place определения (как выше), когда что использовать?
Quet
когда надоест что-то вписывать в каждый файл - переноси в default-extenstions
Vladislav
что вы пишете обычно в default-extensions?
default-extensions: LambdaCase
ScopedTypeVariables
OverloadedStrings
RecordWildCards
RankNTypes
GADTs
TypeFamilies
ConstraintKinds
TypeOperators
DataKinds
PolyKinds
UndecidableInstances
InstanceSigs
EmptyCase
FunctionalDependencies
MultiWayIf
ViewPatterns
StandaloneDeriving
DefaultSignatures
TemplateHaskell
FlexibleInstances
FlexibleContexts
GeneralizedNewtypeDeriving
Anonymous
в рот мне ноги
Vladislav
Это из одного проекта
Vladislav
В других проектах, соответственно, плюс-минус то же самое
Vladislav
Всякие DeriveGeneric, DeriveFunctor, DeriveTraversable, etc — часто
Vladislav
В принципе в GHC можно спокойно почти любое расширение добавлять
Vladislav
Кроме IncoherentInstances (потому что ужас же, лучше бы его не было) и ImplicitParameters (они просто так себе)
Vladislav
OverlappingInstances использовать не нужно, потому что есть per-instance прагмы.
Vladislav
ImpredicativeTypes еще. Я забыл про него, потому что он сломан, и его даже нет смысла включать
Vladislav
Если он заставит какой-то код работать, то это хрупкий код, на это нельзя полагаться
Roman
а вот как в этом хаскелле происходит управление памятью?
Vladislav
Автоматически
Roman
Vladislav
Да.
Roman
а STW есть?
Vladislav
Да
Vladislav
Поэтому для low latency приложений не катит
Vladislav
Только если извращаться по-страшному.
Quet
Да
а там разве не stop-the-thread? :)
Vladislav
В 2013 был STW, http://stackoverflow.com/a/15243682/1486400
Vladislav
Сейчас может уже доделали, не в курсе.
Anonymous
а как свое расширение написать?
Vladislav
Форкать компилятор и писать
Anonymous
то есть они все вшиты?
Vladislav
Да, потому что они слишком сильно на язык влияют, чтобы реализовывать их отдельно. Самое близкое, что можно сделать внешне, это плагин для тайпчекера
Vladislav
(Они есть у GHC)
Evgeniy
Эти расширения как 😄дзен
Anonymous
я хочу символы с долларами на символы с рублями заменить
Anonymous
но парсер не любит такой юникод
adam
Сейчас подберу ненужный стикер
Anonymous
adam
Лучше иди нахуй
Anonymous
я думал хаскелисты не ругаются матом
Vladislav
^ это не Хаскелисты выше
Vladislav
Хаскелисты не ругаются.
adam
adam
Хаскеллисты не делают необоснованных выводов.
Alexander
Alexander
Пока TypeFamiliesDependencies не допилят - нужно
Vladislav
Зачем?
Alexander
Или новые overlapping overlappable не требуют прагмы?
Vladislav
Они ничего не требуют
Vladislav
Можно просто ставить их при объявлении инстанса.
Vladislav
Т.к. сами являются прагмами.
Alexander
А ну ок тогда