1樓:Sqd You
例如這個SO答案裡的例子 scala - When are higher kinded types useful?
首先我們需要一顆二叉樹
data BST a = Tree (BST a) a (BST a) | Leaf
但是如果我們什麼時候需要一顆三叉樹呢? 四叉樹呢?
於是我們做出了一些改動
data Tree f a = Tree (f a) a | Leaf
data Pair a = Pair a a
data Tuple3 = Tuple3 a a a
現在我們可以用 `Tree Pair a` 來表示二叉樹, `Tree Tuple a` 來表示三叉樹, `Tree a` 來表示不定叉樹, 甚至 `Tree (Tree f) a`來表示樹套樹了
至於Functor, 你用不用Maybe/Either來做異常處理? 用到的話自然會使用到Functor (和Monad)
至於Monoid, 有沒有想過帶統計線段樹不一定非要儲存數字? 只要是Monoid例項, Set, List等都可以作為區間統計的內容. 以及為什麼區間和統計和區間最大值統計要分開實現?
它們都是R上不同的Monoid罷了.
2樓:
你去 Codewars 用 Haskell 刷題,先費好大力氣寫出來,再看別人的一行流,你就知道抽象是怎麼回事了(
入口:http://www.
3樓:
剛好在看這篇, 拾人牙慧
提及Functor跟Free, 還用到cata, ana, 都是用在遞迴資料結構
機器學習的決策樹就是種遞迴資料結構, 就可以用了cata用壓縮機函式摧毀結構, ana用種子函式生成結構, 互為對偶
Haskell 有哪些神乎其技的黑魔法?
Belleve fix 1 Lee 對我來說 Aeson Generics 就是黑魔法之一 例子來自 What I Wish I Knew When Learning Haskell 2.3 Stephen Diehl import Data.Text import Data.Aeson impor...
haskell中的callcc有什麼用?
應用 寫點個人理解 重點是理解下面這個函式的含義 gotoCont a r a Cont r x gotoCont c a Cont c a Cont c a 表示不管之後的延續如何定義,直接以引數a,執行c表示的延續。callCCf Cont c runCont f a Cont ca c 在ca...
Haskell 有哪些威力十足的庫?
活動小丑 基本上可以將任何recursive strucutre視覺化。putStr drawTree fmap show Node1 Node2 Node3 1 2 3putStr drawForest map fmap show Node1 Node2 Node3 Node10 Node20 1...