Size: a a a

2021 February 12

к

кана in Haskell
потому что не известно, какие роли у m
источник

к

кана in Haskell
coerce не получится сделать
источник

MK

Maxim Koltsov in Haskell
ну это если forall m
источник

к

кана in Haskell
а для конкретных m сделать уже не выйдет, потому что у них индексы зачастую не фантомны
источник

к

кана in Haskell
newtype IxStateT m i j a
 = IxStateT { runIxStateT :: i -> m (a, j) }

например вот
источник

к

кана in Haskell
фантомен аргумент у const разве что аргумент, но для него и так легко выражается функция смены фантома, и он и не индексед
источник

к

кана in Haskell
кана
newtype IxStateT m i j a
 = IxStateT { runIxStateT :: i -> m (a, j) }

например вот
собственно я больше примеров и не знаю если что
источник

DB

Danil Berestov in Haskell
кана
собственно я больше примеров и не знаю если что
источник

к

кана in Haskell
Ix IO тут это просто IO с фантомами?
источник

MK

Maxim Koltsov in Haskell
это thinking with types, да?
источник

DB

Danil Berestov in Haskell
Maxim Koltsov
это thinking with types, да?
Ну да, яж писал, что её и читаю)
источник

DB

Danil Berestov in Haskell
кана
Ix IO тут это просто IO с фантомами?
Ну да, получается
источник

к

кана in Haskell
в любом случае, индексы это однозначно номиналы, я считаю, тем более в монадах, так что это не хак
источник

к

кана in Haskell
а фантомы должны быть у редких кейсов типа Const
источник

AA

A64m AL256m qn<co... in Haskell
Maxim Koltsov
Там по-моему текст это тупо обёртка над ByteArray#
текст и в text - обертка над байт арреем (вернее в текст обертка обертки, а в з-дата обертка обертки обертки)
источник

к

кана in Haskell
или хотя бы ghc нужно по дефолту делать роль номинальной для параметров типов, конструктор которых не импортируется
источник

к

кана in Haskell
потому что почему первое можно, а другие два нельзя
источник

к

кана in Haskell
выглядит как баг
источник

к

кана in Haskell
и в 9.0.1 это все еще есть
источник

K

Kir in Haskell
Aleksei (astynax) Pirogov
fooBar x
 | let y = x + 42
 , let z = x - 15
 , z + y < 100
 , let sx = show x
 , let ss = show (y * z)
 , length sx == 2 * length ss
 = ...

fooBar x
 | ...

...
вот такое вот видел, да ещё с портянками по несколько экранов у каждого клоза
Я тут LR(0)-генератор парсеров писал. Весьма удобная фича.
closure :: Ord t => Table t -> Set (State t) -> Set (State t)
closure (Table rules) = close $ foldMap \state ->
 case locus state of
   Just (NT nt) -> Set.fromList [firstState rule | rule <- rules, rule.name == nt]
   _            -> mempty

goto :: Ord t => Table t -> Set (State t) -> t -> Set (State t)
goto rules (Set.toList -> states) t =
 mconcat
   [ closure rules $ possible Set.ofOne following
   | state <- states
   , locus state == Just (T t)
   , let following = next state
   ]
источник