import Data.IORef
facM n = do
accRef <- newIORef 1
nRef <- newIORef n
let go = do {
acc <- readIORef accRef;
n <- readIORef nRef;
writeIORef accRef (acc * n);
writeIORef nRef (n - 1);
if (n > 2) then go else readIORef accRef
}
goТеперь только вопросы по х-ю: 1. Как выглядит идиоматичный луп в таком стиле 2. Есть ли
(
Read more... )
Reply
А дойти до того, что точки с запятой работают -- довольно просто. Были промежуточные варианты разные. См. https://codereview.stackexchange.com/a/283479/16287
Reply
Reply
Reply
Может и мне когда-нибудь пригодится...
Reply
Leave a comment