<*>
,其中有一條是這樣寫的:pure (+8) <*> ("hello", 10) -- => ("hello", 18)
<*>
的左邊的那個看起來不像個元組啊?可以猜測一下那邊的內容是什麼嗎?如果你需要提示的話,可以看一下元組上的 Applicative 的前提。
-- Haskell
f x, y = (x + 2, y * 3)
g = (+ 10)
h = f <*> g -- ap!
h 1 -- => (3,33)
如果我們想要把 h
拿到的那個 1
,原封不動的傳給 tuple 後面那個 y * 3
,讓最後的結果是 (3, 3)
,那我們要改動哪一行呢?改成什麼?
data Double a a = Double a a
-- 希望能
(+) <$> (Double 1 1) <*> (Double 2 2) -- => Double 3 3
data Pair a b = Pair a b
-- 希望能
(+) <$> Double "a" 1 <*> Double "b" 2 -- => Double "ab" 23
data Temp = Celsius Float | Fahrenheit Float
deriving (Show)
instance Applicative Temp where
pure = ???
<*> = ???