[過去ログ]
関数型プログラミング言語Haskell Part33 (1002レス)
関数型プログラミング言語Haskell Part33 http://mevius.5ch.net/test/read.cgi/tech/1581326256/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
556: デフォルトの名無しさん [sage] 2020/11/03(火) 11:32:34.46 ID:WdkpFDBO 一応、Num (f a)は導出できるけど、それで定義した(+)だと 交換則(x + y = y + x)が成り立つ保証がないからじゃないかねぇ (パーサの順番を入れ替えた場合を考えるとわかりやすい) {-# LANGUAGE FlexibleInstances #-} instance (Num a, Applicative f) => Num (f a) where x + y = (+) <$> x <*> y x * y = (*) <$> x <*> y abs x = abs <$> x signum x = signum <$> x negate x = negate <$> x fromInteger n = pure $ fromInteger n http://mevius.5ch.net/test/read.cgi/tech/1581326256/556
557: デフォルトの名無しさん [sage] 2020/11/03(火) 11:50:57.17 ID:hn8kPJNe >>556 なるほど、文法的に通っても意味的に文法には出てこない"Num rule"が補償されないからダメって事なのかな? まぁ今はclassのメンバ関数の自分が利用するやつだけ定義する必要無くなったみたいだから手で書いてもいいんだけど、>>550の例だと newtype Eval a = Eval (ReaderT Env (ExceptT String Identity) a) deriving (Functor, Applicative, Monad, MonadReader Env, MonadError String) とかはmonad translater越しにできるし newtype Quantity = Quantity Int deriving (Eq, Ord, Num, Show) もできるのになんで Parser (Int) はあかんねんと なんかプラクマつけたらいけんもんかと Num くらいならいいけど Floating とかだと惨劇になってしまう http://mevius.5ch.net/test/read.cgi/tech/1581326256/557
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.040s