1
"Purescript by Example" 5章の例に基づいて演奏していますが、多型の行タイプを宣言する方法については少し悩まされています。Purescript行の多型。正しい構文は何ですか?
以下は
type Student = {
first :: String,
last :: String,
class :: String
}
type GymMember = {
first :: String,
last :: String,
benchPressPB :: Int
}
daveG :: GymMember
daveG = {
first: "Dave",
last: "Bro",
benchPressPB: 300
}
philS :: Student
philS = {
first : "Dave",
last : "Swat",
class : "1A"
}
schoolRollName :: forall t15.
{ last :: String
, first :: String
| t15
} -> String
schoolRollName rec = rec.last <> ", " <> rec.first
firstAndSurname :: forall t82.
{ first :: String
, last :: String
| t82
}
-> String
firstAndSurname rec = rec.first <> " " <> rec.last
daveFandS :: String
daveFandS = firstAndSurname daveG
daveSR :: String
daveSR = schoolRollName daveG
philFandS :: String
philFandS = firstAndSurname philS
philSR :: String
philSR = schoolRollName philS
罰金コンパイルしかし、どのように私はschoolRollNameとfirstAndSurnameの型シグネチャで重複を削除します。
私は次のように動作しますが、型が一致しないと思った:
type NamedThing = forall t15.
{ last :: String
, first :: String
| t15
}
schoolRollName :: NamedThing -> String
schoolRollName rec = rec.last <> ", " <> rec.first
firstAndSurname :: NamedThing -> String
firstAndSurname rec = rec.first <> " " <> rec.last
-- !! Could not match type
daveFandS :: String
daveFandS = firstAndSurname daveG