2013-10-06 5 views

Antwort

5

Letztere Bindung überschreibt die erstere. Verwenden Sie diese in GHCI:

Prelude> :{ 
Prelude| let f 1 = 1 
Prelude|  f x = f (x-1) 
Prelude| :} 
Prelude> f 5 
1 

Oder ohne das Layout:

Prelude> let f 1 = 1; f x = f (x-1) 
Prelude> f 5 
1 
3

Sie haben sie alle in in einer Zeile eingeben, oder :{ und :} mit mehreren Zeilen eingeben:

> let { f 1 = 1; f x = f (x - 1) } 

Oder

> :{ 
> let f 1 = 1 
>  f x = f (x - 1) 
> :} 

Wenn Sie f zu definieren, verwenden Sie zwei let Aussagen, Sie definieren f das zweite Mal neu und fügen seiner Definition nicht hinzu. Wenn Sie

> let x = 1 
> let x = 5 

Dann täte, würde x 5, nicht 1. Das gleiche gilt für Funktionen geht. Zuerst definieren Sie f als f 1 = 1. Als nächstes definieren Sie f als f x = f (x - 1), wodurch die vorherige Definition für f überschrieben wird.

+1

Es gibt auch GHCi Multi-Zeilensyntax, getoggelt mit ': set + m' /': ungesetzt + m'; Nach einem Let, wenn Sie in der nächsten Zeile um vier Leerzeichen (für die Ausrichtung) einrücken, können Sie weiterhin im selben Let-Block definieren. –

Verwandte Themen