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
Tjo. Damn, kom du på varför det blev 2?
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 :)
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!