Не очень понимаю, как сделать некоторые вычисления eager. Кто знает, подскажите.
Допустим у меня есть простой шелл - State с одной целой переменной. В шелле поддерживается две команды
- r - прочесть целое значение
- w - вывести целое значение
Вот код:
(
тут код )
Comments 6
Reply
Reply
*Main> :t ($)
($) :: (a -> b) -> a -> b
*Main> :t ($!)
($!) :: (a -> b) -> a -> b
*Main> ($!) id (error "aaa")
*** Exception: aaa
*Main> ($) id (error "aaa")
*** Exception: aaa
*Main> ($) (const 10) (error "aaa")
10
*Main> ($!) (const 10) (error "aaa")
*** Exception: aaa
*Main>
Что надо сменить:
cmdRead :: String -> TestShell
cmdRead x =
do let i = read x
put $! i
return ()
f $! x = форсировать x и вычислить (f x).
Reply
Reply
Reply
Reply
Leave a comment