cblp on gh-pages
Split sum and product (compare)
cblp on master
Split sum and product (compare)
cblp on gh-pages
Extend link (compare)
cblp on master
Extend link (compare)
cblp on gh-pages
Add links (compare)
cblp on master
Add links (compare)
cblp on gh-pages
Add "not a bug" notice (compare)
cblp on master
Add "not a bug" notice (compare)
cblp on gh-pages
Typo (compare)
cblp on master
Typo (compare)
cblp on gh-pages
Remove unnecessary code (compare)
cblp on master
Remove unnecessary code (compare)
cblp on gh-pages
Add posts/extensions/2021-04-06… (compare)
cblp on master
Add posts/extensions/2021-04-06… (compare)
cblp on gh-pages
Update 2017-04-06-react-flux-gu… (compare)
cblp on react-flux-talk-timecode-fix
cblp on master
Update 2017-04-06-react-flux-gu… (compare)
в логике (=>) означает импликацию, то есть мы пишем A => B
, когда A не может быть без B. например, Ord не может быть без Eq. в PureScript так.
а в Хаскеле исторически сложилось наоборот, и (=>) означает как бы тоже импликацию, но более сложную: "Если у меня будет Eq, то я смогу дать Ord".
Отцы, тут вот статья про singletons для самых маленьких: https://blog.jle.im/entry/introduction-to-singletons-1.html
Там running example вида
data DoorState = Opened | Closed | Locked
deriving (Show, Eq)
data Door (s :: DoorState) = UnsafeMkDoor { doorMaterial :: String }
и они реализуют
lockDoor :: Door 'Closed -> Door 'Locked
openDoor :: Door 'Closed -> Door 'Opened
А можно ли состояние двери как-то в монаде State хранить, чтобы lockDoor
стал вида State (Door s) a
? Ведь тогда получается тип стейта меняться будет?
Отцы, возвращаясь к этим синглтонам из https://blog.jle.im/entry/introduction-to-singletons-1.html
Понять я все понял, но не представляю как бы я сам это в жизни применил. Могу только по полной аналогии статье:
PhantomType a -> PhantomType b
?А помимо этого?
Всем привет не могу понять почему стандартный list fold пытается взять тип [[char]] и не использует тип [text]
abbreviate :: Text -> Text
abbreviate xs = T.toUpper text
where text = foldl (\acc x -> T.snoc acc (head x)) T.empty res
text :: Text
res = T.split (\x -> x == ' ' || x == '-') xs
res :: [Text]
выдает ошибку
• Couldn't match type ‘Text’ with ‘[Char]’
Expected type: [[Char]]
Actual type: [Text]
• In the third argument of ‘foldl’, namely ‘res’
In the expression:
foldl (\ acc x -> T.snoc acc (head x)) T.empty res
In an equation for ‘text’:
text = foldl (\ acc x -> T.snoc acc (head x)) T.empty res
|
8 | where text = foldl (\acc x -> T.snoc acc (head x)) T.empty res
Text.uncons
.x
и .y
модуля, перечисленных в кабалфайле
Сначала я его распарсил в DotGraph a
из http://hackage.haskell.org/package/graphviz-2999.20.0.3/docs/Data-GraphViz-Types-Graph.html
Распарсить таким образом, чтобы в a
был лейбл я не смог, поэтому пришлось написать функцию, которая проходит по всему графу и матчит ноду с нужными атрибутами. У найденной ноды дернул successors
, а это оказались только непосредственные последователи. Т.е. тут тоже чет рекурсивное надо было изобретать, поэтому я забил.
Потом через fgl
пробовал, но там оказалось что при восстановлении назад из fgl
в дот он какую-то информацию теряет. Не помню уже что именно. Я расстроился и пошел пить.