generated at
Newtype型クラス
Haskellのnewtypeに関する便利関数群
構えるほど難しくはないmrsekut
例を眺めればなんとなくわかる




purs(hs)
module Newtype where import Data.Newtype import Prelude import Data.Generic.Rep (class Generic) import Data.Lens.Iso.Newtype (_Newtype) import Data.Show.Generic (genericShow) import Data.String (toUpper) import Effect.Class.Console (log) newtype Username = Username String derive instance Newtype Username _ instance Show Username where show (Username user) = "Username " <> user user1 :: Username user1 = Username "mrsekut" -- > unwrap user1 -- "mrsekut" -- > wrap "mrsekut" :: Username -- Username "mrsekut"
例があれなので、Number系の例に書き換えようmrsekut

purs(hs)
unwrap <<< wrap = id wrap <<< unwrap = id

k
over
Functorにおけるmapと同じ
purs(hs)
upper :: Username -> Username upper = over Username toUpper -- > upper $ Username "mrsekut" -- Username "MRSEKUT"
over2
2引数版
purs(hs)
concat :: Username -> Username -> Username concat = over2 Username (<>) -- > concat (Username "mrse") (Username "kut") -- Username mrsekut
overF
liftしたmap
purs(hs)
byDomain :: String -> Array Username -> Maybe Username byDomain = overF Username <<< find <<< contains <<< wrap -- > byDomain "aaa" [Username "bb", Username "aaa"] -- (Just Username aaa)
もうちょい見るmrsekut
overF2
under
under2
underF
underF2





op
ala
与えられたnewtypeのコンテキストで、その関数を適用する
purs(hs)
ala Additive foldMap [1,2,3,4] -- 10 ala Multiplicative foldMap [1,2,3,4] -- 24 ala Conj foldMap [true, false] -- false ala Disj foldMap [true, false] -- true
Additive としてfoldMapを適用する
名前の意味 #??
ala'
alaF
purs(hs)
ccc = alaF Additive foldMap String.length ["hello", "world"] -- 10
これ、docsに書いている例だが、型エラーになるmrsekut




purescript-routing-duplexのexampleやってたら出てきたmrsekut