2016-04-07 15 views

Antwort

4

:< ist nur ein Konstruktor für einen Typ in der gleichen Weise : ist für Listen z.

data Stream a = a :< (Stream a) 

in diesem Fall können Sie eine Funktion haben, das erste Element in dem Strom als

streamHead :: Stream a -> a 
streamHead (a :< _) = a 
+0

Ein Strom zu bekommen, ist rechts nur ein Zyklus von Arten? Wie, sagen wir Strom von 1, 2, 3. Wenn ich bis zu 3 bin und rufe streamHead auf (3 <: xs) = 1. –

+1

Nein, ein Stream modelliert eine unendliche Sequenz; Beachten Sie, dass es keinen Konstruktor gibt, um einen leeren Stream zu modellieren. Es ist möglich, dass ein Zyklus mit einem Stream modelliert wird (etwas wie "let n = 1: <(2: chepner

+0

Ein Beispiel für einen nicht zyklischen Stream wäre 'fix $ \ nats -> 0: Cactus

Verwandte Themen