🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: >>=

#355
From: Tomasz Zielonka
Date: Thu, 29 May 2003 09:27
47 lines
2707 bytes
Marcin Gajda napisał:
> Witam!
> 
> Już drugi dzień ślęczę w Haskellu nad monadami i nic - głowa boli coraz
> bardziej.

Hehe, wszystko się zgadza. Miałem to samo ;)

> Czy może ktoś z Was ma jakąś intuicję dotyczącą samego pojęcia monady
> jak i operatora >>=? Tak na chłopski rozum ;)

Monady są na tyle ogólnym mechanizmem, że można o nich myśleć na wiele
sposobów. Wyrobienie sobie skutecznej intuicji dla tak abstrakcyjnego
mechanizmu jest dosyć trudne. Trzeba uważać, żeby nie ograniczyć swojego
myślenia tylko do pewnych zastosowań monad.

Ja myślę o monadach jako o wzorcowym interfejsie biblioteki. Wiele
zastosowań monad można wyrazić w inny sposób, dać bibiotece inny
interfejs, ale stosując interfejs monad zyskuje się od razu całe mnóstwo
gotowych funkcji, możliwość skorzystania z doświadczenia, specjalną
składnię do ich składania (do), możliwość skorzystania z gotowych
bibliotek transformatorów monad, itp.

Wygodnie jest też myśleć o wartościach z danej monady jako o
obliczeniach z pewnymi cechami, np.
    IO-obliczenia     - obliczenia, które mogą wykonywać I/O, używać
		        referencji, tablic mutowalnych, wyjątków,
		        współbieżności, FFI, itp.
    Maybe-obliczenia  - obliczenia, które mogą nie dać wyniku
    []-obliczenia     - obliczenia, które mogą dać wiele wyników
    Parser-obliczenia - obliczenia, które mogą konsumować zadaną listę
			wejściową, a także mogą zawieść
    State-obliczenia  - obliczenia z globalnym stanen, który
			może być odczytywany i zapisywany
    itd.

Mimo, że pojęcie monad pochodzi z teorii kategorii, można ich używać z
powodzeniem nie mając o teorii kategorii zielonego pojęcia, czego dobrym
przykładem jestem ja :)

> Z góry dzięki.

Pozdrawiam,
Tomek

-- 
.signature: Too many levels of symbolic links
Technical Details
Message-ID: <slrnbdbkjb.t42.t.zielonka@zodiac.mimuw.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!mimuw.edu.pl!news.mimuw.edu.pl!not-for-mail
References: <bb47la$o6t$1@kenny.mimuw.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.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: >>=
Date: Thu, 29 May 2003 09:27:09 +0000 (UTC)
Organization: MIMUW
Lines: 47
Message-ID: <slrnbdbkjb.t42.t.zielonka@zodiac.mimuw.edu.pl>
References: <bb47la$o6t$1@kenny.mimuw.edu.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 1054200429 32513 10.1.1.1 (29 May 2003 09:27:09 GMT)
X-Complaints-To: abuse@news.mimuw.edu.pl
NNTP-Posting-Date: Thu, 29 May 2003 09:27:09 +0000 (UTC)
User-Agent: slrn/0.9.7.3 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit