🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: czemu tu taka cisza?

#465
From: Tomasz Zielonka
Date: Fri, 10 Oct 2003 10:03
64 lines
2594 bytes
Przemek Wiśniewski napisał:
>>>>- "gdzie się podziała pętla for?"... :)
>>>
>>>a po co to komu? 
>> 
>> do odróżniania teoretyków od praktyków programowania :>
> 
> W haskellu chyba nie ma 'for', nie znam go dobrze, cos tam podlubalem, 
> ale 'for' nie byl nigdy potrzebny.

Nie ma w jezyku, ale mozna uzyc odpowiedniego HOFa (higher-order
function) lub stworzyc samemu.

For'a z efektami (czyli np. imperatywnego) iterujacego po liscie mozna
napisac, np. tak

    for :: Monad m => [a] -> (a -> m b) -> m ()
    for (x:xs) f = f x >> for xs f
    for []     _ = return ()

Lub krocej

    for :: Monad m => [a] -> (a -> m b) -> m ()
    for = flip mapM_

(bo to jest wlasciwie to samo z mapM_, tylko z inna kolejnoscia
 parametrow)

Uzycie:

    for [1..10] print

w monadzie IO spowoduje wypisanie liczb 1 .. 10 w kolejnych linijkach,
za to

    for [1..] print

bedzie wypisywac liczby od 1 "do nieskonczonosci".

W bardziej skomplikowanych przypadkach mozna uzyc takiej skladni:

    for [1..] $ \x -> do
	print x
	print (x * 2)

Wyglada prawie jak Python ;)

> Po drugie sa dwa rodzaje 'for':
> 
> paskudny: for (i=0; i<10; ++i) / for i = 0 to 9

Paskudnego tez mozna sobie w Haskellu zapisac.

> ciekawszy: for x in [3,4,5,6,7]
> 
> Wiec jesli juz jakis 'for' jest uzyteczny to tylko pythoniasty.

Hmmm, dlaczego tylko?

Pozdrawiam,
Tomek

-- 
.signature: Too many levels of symbolic links
Technical Details
Message-ID: <slrnbod0ul.57r.t.zielonka@zodiac.mimuw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
References: <Xns940C7E860B845dupajasio@127.0.0.1> <87he2m8vkq.fsf@hector.domek> <Xns940C891076596dupajasio@127.0.0.1> <s99y8vytfl4.fsf@localhost.localdomain> <Xns940CD6EFCBADzdomu@127.0.0.1> <s99y8vxt6i7.fsf@localhost.localdomain> <87d6d8kisy.fsf@hector.domek> <3045-1065776488@gw.magellan.net.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.internetia.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
From: Tomasz Zielonka <t.zielonka@students.mimuw.edu.pl>
Newsgroups: pl.comp.lang.funkcyjne
Subject: Re: czemu tu taka cisza?
Date: Fri, 10 Oct 2003 10:03:03 +0000 (UTC)
Organization: MIMUW
Lines: 64
Message-ID: <slrnbod0ul.57r.t.zielonka@zodiac.mimuw.edu.pl>
References: <Xns940C7E860B845dupajasio@127.0.0.1> <87he2m8vkq.fsf@hector.domek> <Xns940C891076596dupajasio@127.0.0.1> <s99y8vytfl4.fsf@localhost.localdomain> <Xns940CD6EFCBADzdomu@127.0.0.1> <s99y8vxt6i7.fsf@localhost.localdomain> <87d6d8kisy.fsf@hector.domek> <3045-1065776488@gw.magellan.net.pl>
Reply-To: t.zielonka@students.mimuw.edu.pl
NNTP-Posting-Host: zodiac.mimuw.edu.pl
Mime-Version: 1.0
X-Trace: kenny.mimuw.edu.pl 1065780183 3544 10.1.1.1 (10 Oct 2003 10:03:03 GMT)
X-Complaints-To: abuse@news.mimuw.edu.pl
NNTP-Posting-Date: Fri, 10 Oct 2003 10:03:03 +0000 (UTC)
User-Agent: slrn/0.9.7.4 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit