🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.funkcyjne
Article #948

Re: Programistyczna zagadka

#948
From: Michal Przybylek
Date: Sat, 26 Jul 2008 00:33
34 lines
2122 bytes
Dnia 26-07-2008 o 02:14:44 Michal Przybylek <michal.przybylek@gmail.com>  
napisał(a):

> computeFact n = callCC $ \exit ->
>    do
>      "i"   <-: n                -- inicjalizujemy "i" na n
>      "acc" <-: 1                -- inicjalizujemy "acc" na 1
>      loop $ do
>        Just i   <- ref "i"      -- wez wartosc zmiennej "i"
>        Just acc <- ref "acc"    -- wez wartosc zmiennej "acc"
>        if i == 0
>          then exit acc          -- wyskakujemy z petli z wynikiem acc
>          else do
>            "i"   <-: i-1        -- ustawiamy "i" na i-1
>            "acc" <-: acc*i      -- ustawiamy "acc" na acc*i

Tak jest jeszcze imperatywniej :-)


computeFact n = callCC $ \exit ->
   do
     "i"   <-: n                 -- inicjalizujemy "i" na n
     "acc" <-: 1                 -- inicjalizujemy "acc" na 1
     loop $ do
       Just i   <- ref "i"       -- wez wartosc zmiennej "i"
       Just acc <- ref "acc"     -- wez wartosc zmiennej "acc"
       when (i == 0) $ exit acc  -- wyskakujemy z petli z wynikiem "acc"
       "i"   <-: i-1             -- ustawiamy "i" na i-1
       "acc" <-: acc*i           -- ustawiamy "acc" na acc*i



-- 
Michał Przybyłek
Technical Details
Message-ID: <op.uevih3u9ozidl8@dlv63.neoplus.adsl.tpnet.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
References: <op.uevdkkkxozidl8@dkd78.neoplus.adsl.tpnet.pl> <op.uevhlrnnozidl8@dlv63.neoplus.adsl.tpnet.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!wsisiz.edu.pl!newsfeed.neostrada.pl!atlantis.news.neostrada.pl!news.neostrada.pl!not-for-mail
From: "Michal Przybylek" <michal.przybylek@gmail.com>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: Programistyczna zagadka
Date: Sat, 26 Jul 2008 02:33:29 +0200
Organization: TP - http://www.tp.pl/
Lines: 34
Message-ID: <op.uevih3u9ozidl8@dlv63.neoplus.adsl.tpnet.pl>
References: <op.uevdkkkxozidl8@dkd78.neoplus.adsl.tpnet.pl> <op.uevhlrnnozidl8@dlv63.neoplus.adsl.tpnet.pl>
NNTP-Posting-Host: dlv63.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.neostrada.pl 1217032425 805 83.24.51.63 (26 Jul 2008 00:33:45 GMT)
X-Complaints-To: usenet@news.neostrada.pl
NNTP-Posting-Date: Sat, 26 Jul 2008 00:33:45 +0000 (UTC)
User-Agent: Opera Mail/9.51 (Win32)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit