2011-01-13 41 views
6

斯卡拉集合API有一些非常有趣的屬性,我想知道如何在Haskell中實現它;或者甚至可能(或者一般來說是個好主意)。我是一位haskell新手,所以我想聽聽你的想法。是否有可能在Haskell中創建像Scala 2.8這樣的集合api?

斯卡拉地圖定義是這樣的:

def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That 

這個API的一個有趣的特點是,如果你映射了一個字符串和地圖函數返回一個字符,結果將是字符串類型的(和不是一個字符列表)。

+3

在Haskell,一個字符串*是*字符的列表。 (在一般情況下,這並不回答你的問題,但我認爲它沒有任何價值。) – mipadi 2011-01-13 22:03:50

+2

Scala(2.8)API庫的一小部分解決了處理* existing *類型以及如何與它們很好地協作的問題。兩個最大的例子可能是`String`和數組。如果沒有說現有的類型問題,我相信很多隱式的構建者是不需要的(它們被設計爲允許「崩潰」到與輸入相同類型的容器)。 – 2011-01-13 22:08:37

回答

2

我想說在斯卡拉這個地圖功能是真正從哈斯克爾接近這個:

fmap :: (Functor f) => (a -> b) -> f a -> f b 

當列表類型是另一個函子。

相關問題