Kpalle behöver inte mer hjälp
Kpalle 126
Postad: 7 jan 2022 20:37 Redigerad: 7 jan 2022 20:38

Haskell syntax: f x = let f x = x+1 in f (f x) What is the value of let x=0 in f x ?

Jag studerar för ett syntaxprov i Haskell och skulle gärna vilja få lite hjälp om varför detta motsvarar 2:

" Consider the function: f x = let f x = x+1 in f (f x) What is the value of let x=0 in f x ? "

Svaret på detta är 2.

Men "let f x = x+1" betyder att f (x+1). Och sedan om vi let x = 0 skulle inte det lämna f(1)?

Tack

 

Snushunk 152
Postad: 18 jan 2022 17:56

Tjo. Damn, kom du på varför det blev 2? 

Kpalle 126
Postad: 18 jan 2022 18:02
Snushunk skrev:

Tjo. Damn, kom du på varför det blev 2? 

Tjena, aa.

let f x = x +1  betyder att f (x+1). Och när vi let x = 0 så blir det f(1). 

Nu återgår vi till den originella funktionen, dvs: f x = let f x = x+1 in f (f x):
Alltså så har vi ett f framför f(1). Funktionen anropar sig rekursivt och ger oss (1) + 1 = 2

Är inte så duktig på att förklara men hoppas det hjälper :)

Snushunk 152
Postad: 27 jan 2022 15:14
Kpalle skrev:
Snushunk skrev:

Tjo. Damn, kom du på varför det blev 2? 

Tjena, aa.

let f x = x +1  betyder att f (x+1). Och när vi let x = 0 så blir det f(1). 

Nu återgår vi till den originella funktionen, dvs: f x = let f x = x+1 in f (f x):
Alltså så har vi ett f framför f(1). Funktionen anropar sig rekursivt och ger oss (1) + 1 = 2

Är inte så duktig på att förklara men hoppas det hjälper :)

aa nice. Godspeed!

Svara
Close