2016-04-07 28 views
1

arasındaki fark nedir? x:<_ göstergesinde kullanılan simgeden daha az ne var? (function (x :< xs))=x'un, bir dize alan ve dizenin başını çıktı olarak veren bir işlev anlamına geldiğini biliyorum. Daha sonra bu işlevde x:_ ve x:xs varsayalım, ancak bu ifade içinde < notasının kullanıldığını bilmiyorum.(function (x: <_)) = x ve (function (x: _)) = x

cevap

4

:<, aynı türde : gibi bir tür için sadece bir kurucudur.

bu durumda
data Stream a = a :< (Stream a) 

sen türlerinden sadece döngü doğru bir dere

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

olarak akışında ilk öğeyi almak için bir işlevi olabilir? Gibi, 1, 2, 3 diyelim. 3 kadar im ve akış diyorum (3 <: xs) = 1. –

+1

Hayır, bir akış sonsuz bir dizi modelleri; Boş bir akışı modellemek için bir kurucu yoktur. Bir akışın bir akışla modellenmesi mümkündür ('n = 1: <(2: chepner

+0

Döngüsel olmayan bir akışa örnek olarak, $ \ nats -> 0: Cactus