0

数か月前に Haskell の学習を開始しました。また、異種リストを使用する別の関数型言語スキームでのプログラミングも知っています。両方のデザインを比較できるように、両方のタイプのリストの長所と短所を知りたいです。

4

1 に答える 1

0

同種リストの利点

それはすべて、私の友人のタイプに関係しています。例として、署名を入力します。

concat :: [ByteString] -> ByteString

この型シグネチャから、文字列のリストを取り、それらをまとめることは明らかです。リスト型を表現するのは簡単ではないため、これは異種リストでは不可能です。考慮すべきもう 1 つのことは、関数がさまざまな種類のオブジェクトを心配する必要があることです。考慮すべきもう 1 つのことは、異種リストと同種リストの間の妥協点です。つまり、存在型です。

{-# LANGUAGE ExistentialQuantification #-}

data Showable = forall a. Show a => Pack a
instance Show Showable where
    show (Pack a)=show a

showableList :: [Showable]
showableList = [Pack 1, Pack "Yolo", Pack 5.2, Pack (3, 4), Pack ["A", "B", "C"], Pack 'c']

main=print showableList

これにより、リストの部分を異なるタイプにすることができますが、同じ方法でしか使用できません。これは、たとえば形状で機能します。それらがすべて形状クラスの一部である場合、領域などを取得するなどのことはできますが、半径は取得できません。

于 2014-04-06T13:38:11.783 に答える