Size: a a a

2021 March 07

к

кана in Haskell
если нет желания возиться с подключением зависимостей, то вот тебе готовый стейт

{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE DeriveFunctor #-}

import Control.Monad (ap)

newtype State s a = State {runState :: s -> (a, s)}
 deriving (Functor)

instance Applicative (State s) where
 pure x = State \s -> (x, s)
 (<*>) = ap

instance Monad (State s) where
 m >>= f = State \s1 ->
   let (x, s2) = runState m s1
    in runState (f x) s2

put :: s -> State s ()
put s = State \_ -> ((), s)

get :: State s s
get = State \s -> (s, s)
источник

к

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

[

[BRM]White Rabbit in Haskell
кана
смог стейт подключить?
я растерянно посмотрел на shue.cabal, на stack.yaml и понял что ничего не понял
источник

к

кана in Haskell
в shue.cabal добавь в dependencies строчку с mtl
источник

к

кана in Haskell
у тебя есть package.yaml файл?
источник

[

[BRM]White Rabbit in Haskell
есть
источник

[

[BRM]White Rabbit in Haskell
кана
в shue.cabal добавь в dependencies строчку с mtl
там нет такога поля
источник

к

кана in Haskell
в package.yaml на толевеле найти вот такое и добавь mtl в конец

dependencies:
 - base >= 4.10 && < 5
 - mtl
источник

[

[BRM]White Rabbit in Haskell
кана
в package.yaml на толевеле найти вот такое и добавь mtl в конец

dependencies:
 - base >= 4.10 && < 5
 - mtl
а, в shue есть, я думал, там какая-то другая фигня
источник

к

кана in Haskell
смотри, если у тебя есть package.yaml, то shue.cabal трогать не надо, он автоматически генерируется из package.yaml
источник

[

[BRM]White Rabbit in Haskell
да, вижу
источник

к

кана in Haskell
есть shue.cabal файл, это описание твоего пакета, и его зависимостей, он основной

есть package.yaml файл, его сделали, потому что многим не понравился синтаксис cabal-файла, и просто решили мол давайте в ямле все писать, и генерировать из этого cabal-файл

есть stack.yaml файл, там указываются, откуда пакеты нужно брать, и каких версий. Поле resolver это по сути имя снепшота, в котором перечислены на stackage все версии какого-то большого набора библиотек, которые вместо собираются с каким-то конкретным ghc. И всякие extra-deps для указания конкретных версий или путей до пакетов, если в резолвере неподходящие

обычно stack.yaml трогать не нужно, когда будет нужно, это будет и так ясно
cabal-файл трогать тоже не нужно, если есть package.yaml, но всегда можно удалить package.yaml и просто вручную кабал-файл редактировать

то есть менять нужно только package.yaml или кабал-файл, если yaml не нравится
источник

[

[BRM]White Rabbit in Haskell
не, yaml топ
источник

к

кана in Haskell
если ты уже редактировал cabal-файл, то stack не будет его пересоздавать, так что можно его удалить, и тогда stack (на самом деле тула hpack) его пересоздаст из package.yaml
источник

[

[BRM]White Rabbit in Haskell
я в yaml-синтаксисе структуру рассказов прописывал, удобно в ide сворачивать по табуляции + подсветка синтаксиса для тегов, ахахахах
источник

к

кана in Haskell
да, мне тоже ямл и package.yaml больше нравится чем кабалфайл, но тут достаточно много противников этого
источник

[

[BRM]White Rabbit in Haskell
дикие люди, бывает
источник

[

[BRM]White Rabbit in Haskell
вон, xml тоже кто-то для конфигов использует
источник

к

кана in Haskell
ну, на самом деле сторонников кабалфайла можно понять, в yaml файле некоторые вещи делаются ощутимо костыльнее и сложнее, чем в кабалфайле (но верно и обратное, очень-очень многое в package.yaml-е делается удобнее)
источник

[

[BRM]White Rabbit in Haskell
Кстати, мне вот для этого сейчас надо гадать, как ты думал, как я реализовал гпсч, да?🌚
источник