相关疑难解决方法(0)

伊德里斯急切评价

Haskell中,我可能会这样实现if:

if' True  x y = x
if' False x y = y
spin 0 = ()
spin n = spin (n - 1)
Run Code Online (Sandbox Code Playgroud)

表现我的期望:

haskell> if' True  (spin 1000000) ()  -- takes a moment
haskell> if' False (spin 1000000) ()  -- immediate
Run Code Online (Sandbox Code Playgroud)

Racket中,我可以实现这样的缺陷if:

(define (if2 cond x y) (if cond x y))
(define (spin n) (if (= n 0) (void) (spin (- n 1))))
Run Code Online (Sandbox Code Playgroud)

表现我的期望:

racket> (if2 …
Run Code Online (Sandbox Code Playgroud)

evaluation haskell lazy-evaluation expression-evaluation idris

29
推荐指数
1
解决办法
1491
查看次数