如果這個問題有點模糊,請事先道歉。這是一些週末白日夢的結果。在Haskell中生成Haskell類型的設備(「second order Haskell」)?
使用Haskell的精彩類型系統,將數學(特別是代數)結構表示爲類型類是令人高興的。我的意思是,只要看看numeric-prelude!但是,在實踐中利用這種美妙的類型結構對我來說似乎總是很困難。
你必須表達該v1
和v2
是向量空間V
的元素和w
是向量空間W
的一個元件的一個很好的,類型系統的方法。類型系統允許您編寫一個程序,添加v1
和v2
,但不包括v1
和w
。大!但在實踐中,您可能想要使用潛在的數百個矢量空間,並且您當然不想創建類型V1
,V2
,...,V100
並將它們聲明爲向量空間類型類的實例!或者,也許你從現實世界中讀取了一些數據,導致符號爲a
,b
和c
- 您可能想要表示這些符號上的自由矢量空間確實是一個向量空間!
所以你卡住了吧?爲了在科學計算設置中執行很多你想要處理矢量空間的事情,你必須放棄你的類型系統,方法是先向量空間類型類別,然後讓函數執行運行時兼容性檢查。你應該嗎?難道不可能使用Haskell純粹的功能來編寫一個程序來生成所需的所有類型,並將它們插入到真正的程序中嗎?這種技術是否存在?通過一切手段指出,如果我只是在這裏忽略一些基本的東西(我可能是):-)
編輯:剛纔我發現fundeps。我將不得不考慮他們與我的問題有何關係(有關這方面的啓發性評論,我們將不勝感激)。
這很有趣!謝謝! – gspr 2010-11-01 09:51:20