我與別人的堆棧溢出的問題,一個簡單的函數玩耍,並寫下了表達(與應用型((>)T),也許?):刪除重複數據刪除 -
f a x ++ f a y
顯然,這是在現實生活中編寫這個表達式的最好方法,因爲我已經有了所有這些變量,但是我看到了f a
的重複,並且認爲「嘿,也許你可以用Applicative實例去除那些函數」。我結束了:
liftA2 (++) (flip f x) (flip f y) a
這只是可怕的。是否有更好的方法來消除這種重複?顯然,我也可以通過將f a
綁定到where
子句中的某些東西來刪除重複內容,但這是爲了使用內置函數的練習。
我喜歡這個答案,雖然!我想我並沒有真正在尋找Applicative的答案,以至於如何使用標準庫去除重複。 – amalloy