[過去ログ] 関数型プログラミング言語Haskell Part33 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
550(1): 2020/11/02(月)00:43 ID:TnMF05Pn(1/2) AAS
質問です
このサイトでNum instanceをDerivingする話が出てました
外部リンク:qiita.com
実際このページの次のコードはうちの環境でも通ります
Haskell Online Compiler [ghc-8.4.4]
Copyright (c) The University of Glasgow
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype Quantity = Quantity Int
deriving (Eq, Ord, Num, Show)
a = Quantity 2
b = Quantity 6
totalQuantity :: Quantity
totalQuantity = a + b
-- Quantity 8
しかし次は通りません
通す事はできますか?
import Text.ParserCombinators.Parsec
import Text.Parsec (Parsec)
newtype ParserInt = PI (Parser Int) deriving (Num)
557: 2020/11/03(火)11:50 ID:hn8kPJNe(1) AAS
>>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 とかだと惨劇になってしまう
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.038s