Difference between revisions of "QuotesPage"
(Added monad description by Don Stewart)
|Line 1,467:||Line 1,467:|
''sigfpe'': Haskell is so strict about type safety that randomly generated snippets of code that successfully typecheck are likely to do something useful, even if you've no idea what that useful thing is.
''sigfpe'': Haskell is so strict about type safety that randomly generated snippets of code that successfully typecheck are likely to do something useful, even if you've no idea what that useful thing is.
''dons'': Think of a monad as a spacesuite full of nuclear waste in the ocean next to a container of apples. Now, you can't put oranges in the space suite or the nucelar waste falls in the ocean, but the apples are carried around anyway, and you just take what you need.
Revision as of 07:22, 1 April 2021
seen on comp.lang.functional:
From: Ashley Yakeley <email@example.com> Subject: Re: Type advocacy Newsgroups: comp.lang.functional Date: Thu, 11 Oct 2001 21:16:20 -0700 Organization: Myself In article <firstname.lastname@example.org>, Ken Shan <email@example.com> wrote: > I am preparing a three-minute talk to tell incoming graduate students > at my school about types. Oh like that's going to work. You'd be better off selling T-shirts that say "WHAT PART OF" (and then the Hindley-Milner prinicipal-type algorithm) "DON'T YOU UNDERSTAND?". If anyone gives you any lip, ask them how to find the square-root of a string. Everything else follows on from that. > What pointers should I give? Safe ones. -- Ashley Yakeley, Seattle WA
After reading this, I just couldn't resist:
<Pseudonym> Lazy evalution is really, really trippy.
* jemfinch just printed an infinite list. <Pseudonym> Quick, type control-C before you run out of bits!
Not all things worth counting are countable and not all things that count are worth counting. -- Albert Einstein
<tez> Anyway, I think the lesson is "don't drink and derive". Or something.
seen on The Pragmatic Programmer's yahoo mailing list: From: Ronald Legere <firstname.lastname@example.org> Subject: Re: Jedi Programming (was: [pragprog] Common List or Dylan?) To: email@example.com Date: Wed, 25 Sep 2002 03:29:01 -0700 (PDT) Reply-To: firstname.lastname@example.org No no no, a jedi master must fashion his OWN language. <*grin*> --- Michael Schuerig <email@example.com> wrote: > On Wednesday 25 September 2002 05:27, Edward Wilson > wrote: > > The real question is: if you were a Jedi Knight, > and > > you could only master *one* language as your > weapon of > > choice, what would it be--Common Lisp? > > Probably. In particular, considering that the Jedi > seem to be somewhat > conservative and CL beautifully captures the > anachronistic elegance and > power of a programming lightsaber. Future Jedi > generations might choose > more modern weapons; Haskell, OCaml and Oz being > among the contenders. > > Michael > > -- > Michael Schuerig > You should go home and > mailto:firstname.lastname@example.org > reconsider your life. > http://www.schuerig.de/michael/ > --Obi-Wan, "AotC"
<shapr> I'm addicted to arrows. * shapr begins his own paper "Generalizing Arrows to Spears" <shapr> Spears can do anything efficiently, but they have sixty thousand laws they must satisfy, and we haven't actually found one yet. <raphael> maybe "Generalizing Arrows to Nuclear Weapons" would simply be: unsafeInterleaveIO
<Janni> doesn't ghc create really _fast_ code? <Heffalump> Janni: it creates really fast Haskell code
seen on #java
<sh1nta> anyone familiar with javacc or any kind of parser for java object? <shapr> I know of a good java source parser for Haskell <sh1nta> shapr:what do you think is a good way to parse an inputstream of strings? like there is a,b,c coming through the serial stream..i have to grab those data <shapr> sh1nta: I'd use monadic parser combinators. <sh1nta> shapr:in simpler words? <sh1nta> shapr:i am kinda newbie <Logi> shapr: no fair to use heavy haskell jargon * mprentice applauds shapr for picking on the n00b <Logi> sh1nta: shapr would do that cause he'd be doing it in Haskell. <mprentice> sh1nta: it depends on what kind of data you're parsing, but javacc might be kinda overkill. it'll take a day at least to learn enough to do anything complicated enough to make it worth doing. * mprentice uses a nuke to kill the pesky cockroach <Logi> oh, learning enough to use monads will take you a week
<esap> I think the way to get stuff done is by doing it. <Marvin--> esap: damn you're smart
<shapr> GHC has more flags than the UN
* jlouis replaces dark with a very small higher order function
<jlouis> Q: When does one know he has programmed too much Haskell? A: When he uses == and /= in everyday IRC chat <jlouis> or when he tries to fix a relationship by passing himself as a continuation
<shapr> I think we should make up a name for combinators that works like Java Beans <shapr> how about calling them Chickens? <Arnia> Chickens? <shapr> then we could talk about Currying Chickens * Arnia groans
<Grog`> http://www.cse.unsw.edu.au/~cs1011/assignment/assign1/index.html <Smerdyakov> This isn't a homework answer service. <Grog`> is it a kind service <Smerdyakov> Yeah, the answer is "drop the class if you're too dumb to do that problem," directed to whoever is in the class.
after a long pointless discussion with a fanatically loyal C programmer on comp.lang.functional <email@example.com>: "The best thing to get out of this, I guess,is that Haskell IS becoming more mainstream and even morons have heard of it." -- DerekElkins
seen on news://comp.lang.functional
> By the way seriously: how do you debug Haskell programs? Mostly seriously: I don't. If the programme doesn't work the way I intended it, I rewrite bits in a simpler fashion until I understand it well enough and it works. For the sort of programme you were asking for, breaking things up until they are small enough that one can understand the individual parts completely (as I did in the solution I posted) and then composing them together really is the best approach. If you need to debug a programme that simple, what it's telling you is that you've written it the wrong way! -- Jón Fairbairn
<Marvin--> the good thing with free software, though, is that I can write my damn software and when someone complains that it doesn't work on their toaster because I'm a moron who can't write portable code, I can say, smiling, "patches welcome" <shapr> yah, I like that too <shapr> but then sometimes you get "I can't understand a bit of your Java code" <Marvin--> that's when you reply "me neither, life's a bitch, isn't it?"
"So, the essence of XML is this: the problem it solves is not hard, and it does not solve the problem well." -- Jerome Simeon & Phil Wadler
in the midst of a discussion about the 'Evil Mangler' in GHC 5.04
<shapr> the evil mangler uses *perl* ?? <ChilliX> yes... <ChilliX> it is Evil after all
<andersca> what meeting? <Marvin--> research meeting for the cover group <shapr> are you guys covering up the black ops section? <Marvin--> shapr: there is no HSU <shapr> and you're not part of it <Marvin--> of course not
In reply to someone who said unsafePerformIO docs didn't include enough warnings, ManuelChakravarty replied:
After all, you can import any C function with a pure type, which also allows you to wreak arbitrary havoc. We enable the user to disguise arbitrary machine code as a Haskell function of essentially arbitrary type. In comparison, `unsafePerformIO' seems angelic.
[discussion of the merits of lazy, eager, macros snipped] The idea isn't to blunder into a language looking for evidence to support a bunch of preconceived misconceptions. the idea is to understand why things are the way they are. macros have advantages and disadvantages. graham lists them in that same chapter. understanding those lets you choose the right tool for the job. that's why it's a good book. if you're not interested in choosing the right tool, but only in proving that something is "better" or "worse" than something else, then why waste time reading books? the world is complex and the more you understand the less certain things become. if you prefer simple black and white then it's better not to learn... (maybe i should add that i don't use lisp; that normally i find it's lisp users who are annoyingly dismissive of other languages; that i, too, have criticised things before understanding them at times; also it's monday morning and i'm still on my first cup of coffee) -- andrew cooke
<CowGirl> what are the 2 most common recursive errors? <hdaume> CowGirl: what <CowGirl> is a question in a past exam on haskell <CowGirl> 2 of the most common recursive errors <hdaume> ...oh....i thought it was a lead-in to a joke
<syntax-laptop> is there a punchline to "how many recursions does it take to screw in a lightbulb?"? <cale> It takes n recursions to screw in a light bulb, one to turn the light bulb once, and n-1 to screw it in.
seen on #haskell:
<Riastradh> What does HFL stand for? <shapr> Haskell Foundation Libraries <Igloo> Haskell Foundation Library <dark> Obviously shapr and Igloo must now duel to the death. * shapr duals Igloo * Riastradh hands shapr a monad and Igloo a comonad. * Igloo waves it around and makes voooob voooob noises * shapr waves his monad around making boov boov noises <Heffalump> Igloo: careful with that, it's unsafe
<shapr> for example: "head (filter (\x -> x > 5) [1..])" <shapr> in a strict language, you can't easily play with infinite lists <dark> In a strict language, you would write that as "6" :)
<Marvin--> I often sigh and say "I could do this way faster and way better in Haskell" and then they say "yeah, and we wouldn't understand a thing of it"
<ejt> I guess it's time I leant how to interface to foriegn code, any pointers ?
<Riastradh> There's no Greek letter for it that I can confuse people with?
The "it" refers to the monadic bind operation.
<Darius> ($$$) :: HardWork -> Dedication -> IO Money <Darius> _ $$$ _ = ioError "Ideology overflow"
Ninja Jones does a not-too-far-off parody of a certain flavor of visitor to #haskell
*** highlyInterested has joined channel #haskell <highlyInterested> hi! I'm highly interested, but have no attention span!!! <highlyInterested> Can anyone help me?!?!? * highlyInterested runs around!! *** highlyInterested has quit: Client Quit
January 9, 2003:
Heffalump: I need to teach my girlfriend temporal logic. Marvin--: how so? Heffalump: she seems to have problems with the "until" operator.
(Ok, remove these c.l.s quotes (or move to some other page) if deemed unappropriate for this QuotesPage !)
seen on news://comp.lang.scheme :
From: Shriram Krishnamurthi <firstname.lastname@example.org> Newsgroups: comp.lang.scheme Subject: Re: What happened to schemers.org? Date: 17 Sep 2002 11:53:53 -0400 Organization: Brown University Luigi Ballabio <email@example.com> writes: > I just checked to site only to find out that it was taken over > by the Dept. of CS at Brown. Is the old site still alive somewhere? The Revolution has begun. The department has been taken over. Comrade Shivers's helicopter will land on College Green at 3.14pm. Deployment of the Underground begins soon thereafter. Lambda bandanas will be available at the corner of Thayer and Waterman. Please remain calm and nobody will get skewered on parentheses. [snipped] Cmde. Shriram From: firstname.lastname@example.org (Dorai Sitaram) In article <email@example.com>, Shriram Krishnamurthi <firstname.lastname@example.org> wrote: >Luigi Ballabio <email@example.com> writes: [snipped] 3.14 *pm*, huh? Underground types (once so strong and dynamic) seem to be getting rather soft and lazy these days. From: "Anton van Straaten" <firstname.lastname@example.org> Dorai Sitaram wrote: [snipped] There's such a thing as being too eager, you know. You wouldn't want an organization like the Underground to remain static, now, would you? That might make them weak, and then they'd need a strict hand to recover the type of discipline they're known for... From: Joe Marshall <email@example.com> MJ Ray <firstname.lastname@example.org> writes: > Joe Marshall <email@example.com> wrote: > > Maybe the plans have shouldn't have been finalized. > > There is a lot of collective finger-pointing. > > Please, this is exceptionally short. Damn, you caught me. But you raise an important point. > I think it's elaboration time. Perhaps, but this message may be read by people who, shall we say, `don't exercise proper hygiene' and I don't want them to take anything out of context.
<DeezNuts> whats the point of programming in haskell beyond it being a cute toy for math fans <mgoetze> DeezNuts: what's the point of programming in c++ beyond it being a cute toy for masochists?
<Pseudonym> Well, personally, I don't think dumb people should be let near a programming language.
<shapr> how will you know when you've written enough? <kosmikus> I don't really know yet, but one of the following: (a) if my supervisor tells me I have, (b) if every chapter heading has content following it, (c) if the deadline is there <shapr> that's an excellent heuristic
<Jerub> I wonder if any interesting languages are going to come out of this parrot thing. <CrewdenX> Jerub: is that the hybrid perl/python thing? <Heffalump> it's the common bytecode for the two, yes <stepcut> see, perl wasn't bad enough, so now you can make your code even more unreadable by written it a mixture of languages <Jerub> its actually the perl6 vm, but they're trying to be the be all and end all of VMs for languages. <Riastradh> And they're going to fail miserably and end up with something that sorta kinda works for Python and Perl and doesn't make sense for anything else. <Riastradh> But they'll persist and say 'ooh ooh look it has continuations so it must work for other languages!' causing more and more people to flock to them more and write more crappy compiler back ends and make the state of the main stream of programming languages suck even more. <Riastradh> Meanwhile, due to lack of person power, the quality functional language compilers will deteriorate into bitrot, so that the main stream idiots can say 'but look, it doesn't even have a library for X, so it must suck, and I won't even bother thinking about writing it, because my crappy language already has it!' <Riastradh> Then the revolution will come. <Riastradh> What happens then I leave up to your imagination, but I can tell you it won't be pretty for the main stream.
seen in an email from Simon Marlow,
Simon's cheat sheet for getting fast Haskell code: Rule 1: don't use String I/O. Rule 2: Profile your program. Find the inner loop. Look for overloading. Squash. Repeat. Look for laziness. Squash. Repeat.
Haskell poetry : 16:50 < shapr> the snow falls slowly, the lambdas are lifting, weak head normal form
<SyntaxNinja> it is a little disturbing when lambdabot starts channeling shapr <Riastradh> What about when shapr starts channeling lambdabot? <Riastradh> shapr: @yow <shapr> I was in MINNETONKA! <shapr> Butch Cassidy had my children! <Riastradh> shapr: @eval (X X X) (X (X X)) (X (X X)) ((X (X X) (X X X))
15:50 < Marvin--> remind me to prod Koen about releasing a new version of QC 15:50 < shapr> Marvin--: hey, could you prod Koen about ... 15:50 < Marvin--> huh? 15:50 < Marvin--> about what? 15:50 < shapr> about releasing a new version of QC! 15:50 * Marvin-- has even shorter attention span than shapr!
Simon Marlow's How to Translate C to Haskell:
> On Thu, Mar 25, 2004 at 01:38:44AM +1100, Alex Gontcharov wrote: > > Hi, > > > > I am new to haskell and would look to write a function equivalent > > to the following loop in C > > > > int value = 500000; > > int part_stack; > > int *part_ptr = part_stack; > > for (; value; value /= 10000) > > *part_ptr++ = value % 10000; > > part_stack :: [Int] > part_stack = [0,50] > > Note that I've performed a memoization optimization--this > makes the code both smaller, faster and easier to read! :P Ignore David, he's pulling your leg. Here's the proper translation: do alloca $ \value -> do poke value (500000::Int) allocaArray 4 $ \part_stack -> do alloca $ \part_ptr -> do poke part_ptr part_stack let loop = do val <- peek value if val == 0 then return () else do p <- peek part_ptr poke p (val `rem` 10000) poke part_ptr (p `plusPtr` 1) poke value (val `quot` 10000) loop loop Cheers, Simon
IRL is short for "in real life" and refers to face to face communication
<bring> it seems it's a lot easier to get into a heated discussion (flamewar if you will) in irc, email or news than irl <bring> something about the lack of non-verbal communication <shapr> I think assholes don't survive IRL <bring> making someone not survive must surely count as non-verbal communication
there's the port we've been missing...
<ozone> shapr: hugs has been ported to an apple IIIc? <ozone> shapr: MAIN :: IO (); MAIN = DO PUTSTRLN "GODDAMN CAPS"
sig seen on usenet :
-- .:[ dave benjamin: ramen/[sp00] -:- spoomusic.com -:- ramenfest.com ]:. : please talk to your son or daughter about parametric polymorphism. :
In the spirit of the above quote:
"But I don't _want_ functional programming!" -- Sarah Peyton Jones, age 11, upon hearing the rules of Go
Sometimes I wonder if Java will be indirectly responsible for hastening the adoption of functional programming languages by providing a caricature of procedural OO. -- Christopher Hendrie
<kosmikus> is there a good english translation for the german word gleichnamig"? <kosmikus> basically: The Chapter "Type-indexed datatypes" is based on the ... paper. <Igloo> I'd say "on the paper of the same name" <Shammah> earthy: but apparently german can do it in one word, and we can't be letting the germans get away with a shorter phrase than us for the same concept!!! ;) <earthy> `Das Kapittel `Type-indexed data types' ist auf dem gleichnamigen Artikel basiert' <earthy> `The chapter `Type-indexed data types' is based on the article of the same name' <earthy> you count. :) <earthy> `Het hoofdstuk `Type-indexed data types' is op het gelijknamige artikel gebaseerd' <shapr> Det kapitel `Type-indexed data types' är grunded av det artikel med samma namn. <earthy> `Le chapitre `Type-indexed data types' est basé sur l'article du même nom' <adept> Here's in russian: òÁÚÄÅÌ "éÎÄÅËÓÉÒÏ×ÁÎÎÙÅ ÔÉÐÁÍÉ ÔÉÐÙ ÄÁÎÎÙÈ" ÏÓÎÏ×ÁÎ ÎÁ ÏÄÎÉÍÅÎÎÏÊ ÓÔÁÔØÅ
during a discussion about writing a real-time strategy game in Haskell....
<shapr> so my idea was to write a strategy combinator library <det> shapr: you crazy haskellers, a special tool for every program! <shapr> nah, a way to program your units <det> shapr: Function Ractive Arrows with Monadic covariance, HOW CAN MY RTS FAIL!
<Igloo> Waah. LaTeX hates me. <lispy> Igloo: why is that? <Igloo> Because it's cast from pure liquid evil, probably
<Jerub> shapr: we have a new manager. she complained of a bad heart when I told her we didn't have revision control.
one minute after the 2004 ICFP programming contest task was announced...
<Lor> This looks pretty darn cool. <Lor> This also looks pretty darn non-trivial. <tmoertel> Lor: No, it *is* trivial: Just de-compile a real ant and reverse engineer it. <tmoertel> :P
<stepcut> in unrelated news, I think I want to produce and air an infomercial <stepcut> but I am not sure what to sell yet <Riastradh> Arrows! <stepcut> "For just 5 easy payments of $29.95 you can learn haskell in my fun and easy video series" <stepcut> "You'll have the biggest Monads on your block!" <stepcut> "Do you want your own house, yacht, or beowolf cluster? Of course you do! With the skills you will learn in my haskell course, and 10 million dollars, you can get all these things AND MORE!" <blackdog> "Destroy your lucrative career as a Java programmer: Learn Haskell!" <clausen> how about a spiritual add? <clausen> "the purity of haskell helped me to deal with the kids, work and the stress of a fast-pace life" <blackdog> there must be a way to use haskell to sell exercise equipment. they've used everything else. <stepcut> "I used to be a fat lazy slob, but now, thanks to haskell, I am fully functional..." <Riastradh> '...and I can still be lazy!'
<Igloo> Syn: You're looking at how WASH works and are in charge of the cabal project, and you're asking /us/ if cabal 0.1 will handle WASH? :-)
seen on #java:
(14:21:13) ricky_clarkson: Is Haskell an interface between programming languages and academics?
roconnor has joined #haskell <roconnor> ? <Riastradh> ! <roconnor> oh, nevermind. I figured it out.
<Igloo> Oh, I'm going to sue you for emotional trauma, BTW <Marvin--> uh-oh <Igloo> I had to use unsafeCoerce# 3 times to write my gtk2hs program <Marvin--> ouch <Igloo> I think I'll be scarred for life <Marvin--> :-/
The acronym TMI is short for Too Much Information!
<desrt> wtf. i just opened up my underwear drawer and there was a network card in it <shapr> desrt: you're a sick sick puppy <earthy> TMI <earthy> I won't be borrowing any hardware of desrt anytime in the future, that's for sure ;) <desrt> earthy; it's all cool. it was in with the socks
<desrt> how do i turn on PIC code generation for ghc? <shapr> -fPIC maybe? <desrt> no <shapr> -fThaller ? <desrt> ghc-6.2.2: unrecognised flags: -fThaller <desrt> :(
Just after a discussion of Microsoft's involvement in the Haskell world...
<CosmicRay> Is there a way to, say, convert from a Word32 to a Word8 when I know the data in question will fit in a Word8? <drlion> CosmicRay: just open the file and Word will ask you to convert it
<Philippa> I'm fed up of writing uglyprinters for values inside an interpreter
<kristnjov> QuickCheck is god * earthy thinks kristnjov has a *weird* religion <kristnjov> it's called hughes-ism <kristnjov> a bit new age <blackdog> this y combinator, which was given to you for the recursion of sins <earthy> lead me not into global state <blackdog> yea, though I should walk in the valley of imperative code, I shall fear no evil, for your monad comforts me still
ISAGN is irc-speak for "I see a great need"
* shapr throws a lambda boomerang <Igloo> ISAGN <shapr> Maybe if ICFP is in .au one year, they can give them away as the entrance gift. <Igloo> That sounds dangerous. Best to give them away as exit gifts <ski> or moooonad didgeridoos
<jemfinch|lambda> maybe I'll write an IRC bot in Haskell or SML. <dash> what's wrong with lambdabot? <dash> other than an excess of sarcasm
during a discussion of endomorphisms, hylomorphisms, catamorphisms, anamorphisms...
<edi> What's SPJ ? <jadrian> Simon P. Jones <jadrian> edi: http://research.microsoft.com/Users/simonpj/ <shapr> SPJ is a large part of the reason Haskell is so cool. <shapr> I'm an obsessive research paper downloader/reader, and I still haven't read everything I have on-disk by SPJ. <jadrian> shapr: I think SPJ is an obsessive paper uploader/writer, so it's going to be tough competition :)
<shapr> Tom Lord is darcs' archenemy! <CosmicRay> shapr: and he's also carpal tunnel's best friend.
<pesco> I'm currently reading Asimov's Foundation trilogy and Haskell strangely reminds me of the Foundation. I'm just wondering how "avoid success at all costs" fits into the picture. <shapr> speed of change <pesco> Exactly! <shapr> Not sure if that fits into the Foundation trilogy though. <pesco> Of course! They don't strive to expand and conquer rapidly. <pesco> They just follow the plan. * shapr tries to remember all the details of Hari Seldon's plan. <Igloo> And every year the image of SPJ appears at HW to impart new knowledge upon us... <Igloo> And it looks so real!
?CosmicRay introduces us to his treacherous megahal bot...
<Pseudonym> megamonad, what is haskell? <MegaMonad> Pseudonym: Well, i'd ask john hughes about using haskell actually. <Pseudonym> Good advice. <Pseudonym> megamonad, what is scheme? <MegaMonad> Pseudonym: Man i love scheme.. So i'll do freelance coding of this is a neat solution. <Riastradh> MegaMonad, but what _is_ Haskell? <MegaMonad> Riastradh: It's is always stupid peoples to do this in haskell.
<bringert> I think the main problem with haskell is that memory use can be hard to predict <bringert> don't get me wrong, I find it the best language for most things <bringert> sure, Java uses lots of memory, but I find it easier to predict memory use in java <bringert> i.e. always lots of it :)
<lyceen> I speak english, german french and dutch lol <ibid> what's this language "lol"? never heard <Lemmih> ibid: It's from the strange land of counter-strike players and noobs. <ibid> Lemmih: figures <ibid> are there different dialects, english lol, german lol, and perhaps ... dutch lol? <Lemmih> I think it means 'end statement' or ';' from C.
"Haskell is the least-broken programming language available today."
-- Havoc Pennington http://ometer.com/books.html
<Pseudonym> Ah, poor spouse of mine. <Pseudonym> She's hit a Windows bug where every few minutes, without fail, it tells her that it's found a new printer. <Pseudonym> The one which is already installed. <Pseudonym> "It's like Chinese water torture!" <Pseudonym> "GOD MAKE IT STOP!!!!!!!" <Pseudonym> I tried to explain to her that God has no jurisdiction over Windows, and she should talk to the other guy instead. She was not impressed.
<chip> It seems to me that the authors of the C++ template rules learned Haskell, then got drunk and added it to C++ <chip> process _ _ target "dict" _ = do <chip> process _ _ target "dict-help" rest = do <chip> process _ _ target cmd rest = do <chip> I could spell that in about a screen of C++ templates. Except for the string part. It'd have to be basic values like integers, or enums, or something else that's known and comparable at compile time.
"I spent about an hour figuring out how to encode things, and working through the type errors, and then of course, it just worked. Yes, I know that this is exactly what haskell is all about, so of course it worked. But it felt so good to experience it, instead of just hearing about it." -- http://www.kimbly.com/blog/000030.html
<the_learner> CAN HASKELL BE USED NOW IN A STARTUP TO MAKE MONEY <wli> the_learner: haskell.org is indeed the root of all MAKE.MONEY.FAST methods <the_learner> NICE <the_learner> OK PERL OR HASKELL <wli> the_learner: ISN'T IT? <musasabi> I think that making money has little to do with technical quality or the lack of that ;) <wli> the_learner: HASKELL OF COURSE <the_learner> HASKELL SEEMS TO HAVE LOTS OF UNFINISHED SUPPORT LIBARY <the_learner> OK <the_learner> GNIGHT 4 NOW <mflux> it's a darn shame I've sacrificed my caps lock for other purposes :-/ <wli> the_learner: HASKELL DOESN'T NEED THE SUPPORT LIBRARIES; ITS ABSTRACTIONS ARE HIGHER-LEVEL
<Gahhh> monads are usually a personal experience.
<shapr> I've tried to teach people autodidactism, but I've realized they have to learn it for themselves.
<Pseudonym> OK, so I try to find stylesheets for magazine-type documents. <Pseudonym> And I search for "latex magazine". <Pseudonym> There are some weird magazines out there.
<SyntaxNinja> Fromagxo: NOT is not not in haskell, nor is "!", but rather, not.
* autrijus stares at type Eval x = forall r. ContT r (ReaderT x IO) (ReaderT x IO x) and feels very lost <shapr> Didn't you write that code? <autrijus> yeah. and it works <autrijus> I just don't know what it means.
<SyntaxNinja> I think that the compiler authors will fly here from england just to kill me if I did that
<samc__> monads are hard, let's go shopping
<desrt> it was sort of funny. i was sitting in the optimisation lab once and wolfram came in and started talking to wolfgang in german <desrt> so i'm like "it's awful rude you know, speaking a language that i don't understand right in front of me" <desrt> so they switch to english, but they were talking about category theory, so i still didn't understand them :(
"There is a VCS named darcs, which is much more flexible, but is specced using quantum physics language and written in a scary language called Haskell."
-- AutrijusTang at [WWW]A Plan for Pugs
Is it just me or does this so crystallize the popular view of Haskell? -- DerekElkins
After a long series of questions on #haskell from someone writing their own language:
<autrijus> I think Haskell excels at everything but user base :)
* Darius imagines XSLT programmers say "It's a one pager" the way most other programmers say "It's a one liner".
<Forest> why do they make condoms with different smells ? <Lemmih> Is that a lead-in to a joke or a real question? <Forest> it's a question <RemiTurk> now, a question back to Forest: what's its relation to haskell? <Forest> RemiTurk: learning haskell is a kind of f...ing <Forest> for first time <bringert> Forest: how so? <Forest> bringert: i meant for brains <bringert> it's awkward the first time, but as you go along you gain experience and confidence. most people enjoy it enough that they continue doing it for the rest of their lives.
<jjang> Lemmih: dont u have a sourceforge page or so for the module? <Heffalump> ick, he said sourceforge :-) <Lemmih> jjang: It's just a small pet project. Nothing serious. <jjang> why not make it serious <Lemmih> jjang: And shapr is kinda like sourceforge. <jjang> ok <jjang> never heard of shapr <Heffalump> it's much more intelligent <Heffalump> better designed <Heffalump> a touch eccentric, perhaps <jjang> shapr.org? <Heffalump> even has a bot on the channel <vincenz> jjang: shapr is a concept <jjang> oh
<shapr> In my experience, Flash is mostly used as the hi-tek replacement for <BLINK>
Life is Hard, But Life is Harder When You're Dumb -- The Austin Lounge Lizards
seen on #perl6
<cognominal> autrijus: what is the GADT ,entionned in your journal? <cognominal> stands, for Glasgow Abstract Data Tree?
* dons keeps typing 'darcs' when he really means to type 'cvs' <blackdog> the rest of the world keeps typing cvs when they should be typing darcs...
<sethk> Are nomads the reproductive organs of Haskell? After all, something does go in and something else usually comes out... ok, kind of lame, but it is 5 AM.
Refering to typed lambda calculus as "plain ol' code" may be a sign that I need to re-examine some of my prejudices about formalisms. :-) -- LukeGorrie
<pesco> Heh, to deprecate means "to ward off by prayer" in its latin root. Hehe.
<Gahhh> I told my boss that I had learned Haskell and it made me a better programmer, he gave me the puzzled look you give to homeless people claiming to be Jesus.
<shapr> Oleg will do something terrifying like implementing type checking in tcp/ip checksums on the router level through some emergent property of BGP and he'll do it all with HSP!
seen on #debian-devel
<dilinger> trave11er: CosmicRay's weblog hasn't led me astray yet :P <trave11er> dilinger: i cannot trust people who can write a 100+ line haskell program :-) <trave11er> that's almost a legal definition of insanity <Igloo> You're right; Haskell is such a concise, elegant language that anyone who stretches a program beyond 100+ lines is clearly doing something wrong
<Huschi> is there a good way to make the first argument of a function the last one? <skew> Huschi: hand the other party in the argument a gun
<blackdog> kallo, kallay: my grilf dragged me along to a ceramics class, and I now have a mug with a lambda on one side and the legend "go away, or i will replace you with a trivial lambda expression" on the other.
(grilf == girlfriend I assume?) (your assumption is correct. i shall get some pictures and post. (unfortunately, i've just realised that the lambda looks an awful lot like the half-life logo, so i'm expecting some confused faces.) --blackdog (Yay confusion! Lambda actually *is* the symbol for half-life. Also the nuclear one, that is.) (I don't know why this/nowiki page contains so much irrelevant detail))
I'm personally of the opinion that functional programming makes it even harder to shoot yourself in the foot, but when you do, all that's left are a few strands of red goo dangling from the shattered remains of your brain pan.
--Mike Stone in http://www.perlmonks.org/?node_id=450922
<wagle> A math professor I once worked for asked me several years ago what I was doing these days. I must have said something like "anything but computer science". He asked "why's that?" I spouted passionately at length why not. He said something like "oh, computer science IS your field!"
(17:20:51) JohnMeacham: The Hierchical Modules report does contain a section about how it maps to the filesystem, but it specifically says that this is not a part of the specification and just a possible implementation. (17:21:15) JohnMeacham: This is why I felt okay about jhc breaking it :) (17:21:25) SamB: nobody is crazy enough to implement it elsehow, though (17:21:42) CosmicRay: SamB: some crazy people hang out here
<skew> I think it's pretty neat how other languages struggle and sweat to add new stuff like continuations, and in Haskell somebody just applies about 20,000 IQ-years and invents another monad
<JohnMeacham> That's a lot of cows.
<shapr> Where's my socks!? <shapr> Finding my socks seems to be an NP-complete problem to me.
* dons X11s his curses installation
<lambdabot> I'm sitting on my SPEED QUEEN ... To me, it's ENJOYABLE ... I'm WARM <lambdabot> ... I'm VIBRATORY ... <dons> yikes! <dons> hmm. looks like @vixen has been talking to @yow
seen on #perl6
<autrijus> using Haskell is like having the power of Reason. <autrijus> all bad guys listen to Reason.
(2005.05.30) Lambdabot is female
<boegel> oh, okay, you're a experienced user then... ever heard about lambdabot ? <boegel> she's cool <SyntaxNinja> boegel: lambdabot is a girl? <boegel> SyntaxNinja: yeah, sure, why not ? :) <Biker> boegel: I have seen it working here... not used it myself though <Biker> yeah... she could be :)
<xerox> What could it mean something like this? "<TITLE>Error</TITLE><BODY><H1>Error</H1>FW-1 at sentry2.york.ac.uk: Access denied.</BODY>" <Itkovian> that you're screwed? <boegel> a HTML-page saying some error has occured ? <dblhelix> is this a quiz?
seen on #perl6
<Limbic_Region> learning Haskell to me is akin to learning an alien (as in space) language
<xerox> I can't read other languages than Haskell anymore, I have the _physical_ need to know the type of the functions used.
<olliej> java is a great language <olliej> i like to eat toothpaste <olliej> :)
<shapr> Yeah, it does require more than an oleg of type-hackery. <poetix> oleg's now a unit? <autrijus> is oleg an unit now? <shapr> Yup, a rather large unit of type-hackery too.
<tomdavie> buh... I wish people would stop asking for my source... I keep having to do a make realclean, and then spending half an hour buinding again :( * earthy grinz <tomdavie> I suppose I could just back up the work... but hey... that would be inteligent <earthy> why not manage the stuff with darcs and have a clean tree and a build tree? :) <earthy> oh right, we don't want to think, we're lazy functional programmers. :P
<boegel> [BAF64]: you should ask lambdabot, she seems to be willing to donate <Igloo> [BAF64]: Are you here purely to beg for donations? <mauke> @vixen are you willing to donate? <[BAF64]> I'm not begging for donations. <xs_> oh, lilo needs rent? <lambdabot> yes, i am <Igloo> [BAF64]: If you're not here to talk about Haskell, please can you leave? <[BAF64]> Igloo, sure <[BAF64]> lambdabot, if you want more info, join #freenode * [BAF64] (firstname.lastname@example.org) has left #haskell ("Leaving") <Igloo> lol!
<autrijus> Perl: "Easy things are easy, hard things are possible" <autrijus> Haskell: "Hard things are easy, the impossible just happened"
<gennet1> i guess i just want the one language to rule them all ;) <earthy> one language to rule them all, one language to find them, one language to bring them all and in the darkness enthrall them, in the land of ICFP, where the programmers lie?
Sleep deprivation is bad!
<Speck> Oh my god. Crickets in the basement. <Speck> Hundreds of them.
A http://www.cs.vu.nl/boilerplate/ parody:
<shapr> autrijus: What's the title of your fabled article? Boil your ScratchPad with Style? <autrijus> shapr: it's "Boil your scratchpad", "Boil other people's scratchpads", and "Boil your scratchpad with proles". The full name of the first one is "Boil your scratchpad - Genetic frogging in Haskell" <Pseudonym> Aren't you supposed to boil a frog slowly? <autrijus> right, that's why genetic frogging is slow <Pseudonym> And what do the proles have to do with it? <autrijus> the idea is no-one with class -- not even middle class -- will bother themselves with frog boiling; it offends their bourgeois taste. so need proles to do that <dons> I see, boiling scratchpads without class <autrijus> yup.
<Speck> "That's like cheating. It isn't even programming. You just tell it what to do and it does it." -- My friend upon seeing some Haskell code
<Beelsebob> DAMN IT! There's a fly *in* my monitor <Beelsebob> it's somehow got between the LCD and the backlight <Beelsebob> it seems to have got scared by me chasing it with a cursor <Beelsebob> ARGH! There's two now <Beelsebob> has some fly made a nest in there or something? <Beelsebob> I may have to take this monitor apart
<Cale> stepcut: You know a library is good when just reading about it removes the particular task it performs from your life altogether.
<autrijus> (type inference)++ # no need to be a strong typist to enjoy strong typing
"My productivity increased when Autrijus told me about Haskell's trace function.
He called it a refreshing desert in the oasis of referential transparency." -- chromatic, on hacking Pugs to implement a unit test framework for Perl 6
Seen on #haskell:
goron: Ah.. the halting problem is easy. Step 1 wait an infinite time Step2 Check whether the program halted.
<darix> the problem with haskell is <darix> the learning curve is like a mountain in the himalaya ... <darix> nearly 90degree and close to 8000 m <darix> but standing up the hill just rocks ;)
*** mwc (n=matt@CPE0030654f85d8-CM00137189c512.cpe.net.cable.rogers.com) has joined channel #haskell <mwc> I think that we ought to treat cats that have been sprayed by skunk with the same method as horses with broken legs. <mwc> After 20 minutes of wet cat Judo, I'm utterly convinced they don't like the common treatment <mwc> after all that biting, scratching, and attempts to jump out despite me holding its chest down, I decided not to bother drying the little bugger off <mwc> just threw outside to air dry <mwc> although after that ordeal the clothes dryer was looking MIGHTY attractive <mwc> so, that was how my day got started
<exa> so did haskell have an eval function? <exa> i remember something like a generic programming tool that allowed you to construct syntax trees but i'm not sure * exa loves genericity! <exa> +1 for type classes :) <stepcut> exa: dons wrote a hsplugins thing that has an eval function <Philippa> and template haskell effectively has compile-time eval <autrijus> and you can load hsplugins during compile time too. <autrijus> (via runIO) <Philippa> and use TH in plugins <autrijus> and generally become dangerously close to insanity <Philippa> I mean really, once we have boxy types and proper existentials... what'll the point of smalltalk /be/? :-)
Heffalump: I think you'll find I'm trolling, not flaming. Pay attention.
dcoutts: Heffalump, yeah, you can't really troll when we know you. Come back under another nick and it might work.
22:17 * poetix thinks xerox should write a book on UI programming in Haskell 22:17 < Marty> that's what i'm saying ;) 22:17 < xerox> A _book_ ?! 22:17 < poetix> Get it published by O'Reilly 22:18 < xerox> We could choose an animal for Haskell that way! 22:18 < poetix> Exactly! But which animal? 22:18 < vegai> Sloth? 22:18 < vegai> isn't it obvious? =) 22:18 < poetix> Slime mold? 22:18 < xerox> Something between myth, fantasy and dream. 22:18 < vininim> a catterpillar =p 22:18 < basti_> -g- 22:18 < basti_> with a hookah 22:19 < poetix> Well, we know Haskell is a drug 22:19 < xerox> Yes. 22:19 < basti_> ohh. 22:19 < xerox> So.. hypotic toad? 22:19 < basti_> comparable to what? 22:19 < xerox> *hypnotic tad 22:19 < poetix> liftIO makes you larger, and foldR makes you small 22:19 < poetix> And the id that mother gives you, doesn't do anything at all 22:20 < vininim> o_o 22:20 < basti_> lol 22:20 < poetix> I am really not as old as quoting that makes me sound...
Seen is #haskell-blah
poetix_: In ancient Athens, they used to punish adulterers by forcing radishes up their rectums boegel: poetix_: sounds like fun !
< int-e> @eval takeWhile (/=) $ map (take 2) $ iterate (drop 2) < schyffe> thanks < Igloo> unfoldr (\xs -> if null xs then Nothing else Just (splitAt 2 xs)) -- unfoldr strikes again! < int-e> neat. thanks Igloo * Heffalump thinks int-e's is clearer < Igloo> Yes, but mine uses unfoldr < Heffalump> precisely :-) < Igloo> I think you're missing the point here :-) < int-e> so null == (/=) < Heffalump> no, null == not.(/=)
<ricebowl> what does >>= do? <basti_> ricebowl: monads are cute pink fuzzy little things. <gzl> with plutonium inside.
Seen on #ruby-lang
<shevegen> haskell is cool but i personally find it very difficult <GnuVince> That being said, I hear it's a very nice and fun language, although some things are hard to do in a purely functionnal way <chris2> i prefer less strict languages
During a heated discussion:
23:34 < shapr> Heffalump: You said that my assertions do Haskell a disservice. How does that work? 23:35 < Heffalump> because if people believe you and then discover that you are wrong, they will be more suspicious of future claims by others 23:35 < int-e> work_metaperl: try selling sodas and popcorn. 23:36 < work_metaperl> then Heffalump and shapr will throw them at each other :) 23:36 < Heffalump> eating it is better 23:37 < autrijus> I'd like some pushcorns 23:37 < xerox> Ã²karma- autrijus 23:37 < autrijus> popcorns are overrated. 23:37 < work_metaperl> the only use for soda is throwing it... either throwing it up or throwing it out 23:37 < work_metaperl> it does not belong in the human body 23:37 < shapr> Heffalump: So what? I'm not Haskell. We all just try to figure stuff out the best we can. I'm doing my best, I assume you're doing yours. 23:37 < wagle> throwing popcorn in the exception monad? 23:37 < work_metaperl> push corn, pop corn, unshift corn, shift corn 23:38 < xerox> resetcorns 23:38 < basti_> argh 23:38 < autrijus> splicecorns 23:38 < work_metaperl> :) 23:38 < wagle> cornads 23:38 < basti_> call/cccorns 23:38 < work_metaperl> LOL 23:38 < xerox> call-with-current-corn 23:38 < work_metaperl> cornads .... LOLOLOL 23:38 < Oejet> cocorns 23:38 < xerox> ahah! 23:38 < work_metaperl> lol 23:38 < int-e> cornads are generalized stacks? 23:38 < xerox> co-cornads 23:38 < Heffalump> shapr: I'm just commenting on your opinions. I obviously don't have any power to make you act differently. 23:38 < xerox> (along the lines of co-monads) 23:38 < wagle> xerox: rnads 23:38 < Oejet> xerox: Too late. :-P 23:38 < astrolabe> Online discussions escalate too easily because of lack of non-verbal signals. 23:38 < work_metaperl> thats so corny
<sethk> what's the definition of a supercombinator? what makes it super? <dave_m> sethk: supercombinators are only vulnerable to kryptonite
<ulfdoz> schemers are strange. <sieni> ulfdoz: why the call/cc would you think that?
<ValarQ> Oejet: i looked on a webpage that sells books for a haskell book today, i found one and on the page there was a note saying that people who bought that book also bought some book called "the paincarrier" (rough translation) <Philippa_> haskell's rare enough still that it doesn't take much to give a bookseller a link between it and (say) BDSM <Philippa_> hell, the only reason I've not contributed to that one myself is I've never bought a book on Haskell
* Korollary map hug #haskell
dons discovers the Google Maps API:
<dons> and you can just zoom in until you see the locations at full res. huh. so this is how I track my enemies
Another C++ user enters the channel...
<Megzl> The first task for Haskell would be to implement an L-System. <Cale> xerox and I wrote a nice L-System generator <Megzl> Show me the code. <Megzl> I'm interested in L-Systems; I've spent a ton of time coding them in C++. <Cale> http://www.haskell.org/hawiki/HaskellIrcPastePage <Megzl> That's too little code. <Cale> unfortunately, it involves some abstractions you don't know yet :) <Megzl> Where are all the other rules besides F.
No longer Test Driven Development, but intead:
<autrijus> TDD is actually Tolkien-Driven Development.
<sieni> is yi+hide trying to be a replacement of emacs for haskell or are people going to incorporate all standard ide suckiness to hide as well? <dons> emacs for haskell, yes <dons> suckiness is an optional plugin <dons> you'll need to download that first
Seen on #perl6, discussing the weaponry of Haskell
<autrijus> when I'm preparing the slides... it occured to me that most of the perculiar features in hs is there just so we can fearlessly golf^Wrefactor things, without putting the entire program logic into one's head <autrijus> aka the power of Reason -- as in Snow Crash <gaal> <gaal> it features strong typing, too, in a way. <gaal> you definitely know when you're at the wrong end of this fellow. <autrijus> and static, too <autrijus> if you stay at the right end you'll probably remain there <gaal> yes, it's very haskellish to call something static when it fires fifty rounds a second. * autrijus goes lifting -- I mean fmapping -- this picture into the talk
<musasabi> Haskell is pure Joy, and joy can be implemented in Haskell.
<sethk> I used to play in fairly loud bands but I always made sure the speakers were between the audience and me <sethk> Once they found a seriously high person _inside_ one of the big bass cabinets
<EdLin> obj c is a sort of cross between smalltalk and c <dfgp> If you fed Smalltalk lead until it became retarded. ;)
<dons> hmm, what's the opposite of serialising something ? <stefanw> deserialising? <dons> :( yeah, that's currently the function name I have. but it's ugly <dons> maybe i could use reify and, umm, what's the opposite of reifiying something? <ski> reflect <dons> ah, right. * ski thinks that's a bad idea, though <dons> hehe. <ski> hm .. <ski> 'deify' and 'deflect' ?
<JohnMeacham> not haskell related but interesting if you know wolfram or his work: http://www.cscs.umich.edu/~crshalizi/reviews/wolfram/ Heh... it makes me wonder what sort of things we will be publishing in our quackery years, "Monads don't emulate the world, the world is a poor emulation of a monad." "The second law of thermodynamics as expressed via functional dependencies" <JohnMeacham> of course any minute now oleg is going to come along and actually express the second law of thermodynamics via functional dependencies as a purely incidental part of improving HList syntax or something.
<basti_> google has kind of a personality <basti_> a little like one the "great elder gods" in the cthuluh myth i think.
<astrolabe> lazyness is next to godliness
*** BigMike04 (i=BigMike0@d64-180-58-123.bchsia.telus.net) has joined channel #haskell <BigMike04> hey <BigMike04> does anyone can give a newbie here a guide to hack? <astrolabe> @learn <lambdabot> http://www.haskell.org/learning.html <BigMike04> @learn <lambdabot> http://www.haskell.org/learning.html <BigMike04> @learn <lambdabot> http://www.haskell.org/learning.html <BigMike04> opps sorry <astrolabe> :) <astrolabe> Give one of those a try <ski> @google yet another haskell tutorial <lambdabot> http://www.isi.edu/~hdaume/htut/ <ski> @google haskell c tutorial <lambdabot> http://www.haskell.org/~pairwise/intro/intro.html <ulfdoz> Hack? He knows C! <ski> BigMike04 : check those out, too <BigMike04> i got one right here but it is exploit tut http://www.wifiscan.net/td/tutorials/exploits.htm <BigMike04> now, any of you guys actually hack? <Korollary> Ugh <Speck> I think we have different working definitions of "hack" <ulfdoz> I prefer "to program". <Korollary> "that" kind of hacking... umm no. <Lemmih> I so hope you're a bad joke. <astrolabe> You need to say 'where hack = ...' <Speck> the best advice I can give if you want to learn how to be a hax0r is to learn C. Maybe you'll get so distracted you come out a good programmer by mistake. <BigMike04> yes a friend told me that <BigMike04> im only 16 guys..the so far i have taken info tech..next year i will be in cisco <Speck> what would you do with your hacking knowledge? <Korollary> Why hack instead of program useful stuff like decent people ... <BigMike04> what will i do with the hacking knowledge? just like anyonem hack computers! lol im joking. i would use it in good use and not to mess around or anything. <astrolabe> LOL! <rep> hacking is fun. <ulfdoz> He watched 23. This evening it was broadcasted in germany. <rep> and you learn a lot <BigMike04> but yeah is cisco worth it? <yozora> hacking for a noble cause then huh <Speck> learn C, they probably have a channel somewhere. Haskell is horrible if you want to have dangerous knowledge -- you might accidentally hurt your manhood in Oleg's zipper, but you couldn't DDoS anyone with Haskell; your heap would explode. *** BigMike04 (i=BigMike0@d64-180-58-123.bchsia.telus.net) has left channel #haskell
<dons> oh, nice, david roundy is using ion. <dons> and tuomov is using darcs <dons> happy happy
<lispy> Me> "I worked 80 hours today";; TimeBot> "Timesheet updated."
<dcnstrct> alright people the choice is clear, even the #lisp people say go with haskell so I will
comparing what to what?
<Cale> a bunch of oranges, one red
I tried to formalise a proof of rev (rev l) = l I found in W. Kluges book "Abstract Computing Machines - A Lambda Calculus Perspective" which is pretty much a 'Pimp My Ride' for SECD-machines. --Sebastian Hanowski
< ihope> data Badger = Badger Badger Badger | Mushroom < Philippa> Pattern match failure: Snake!
(to those whom it might concern: this is a reference to a pretty bizarre swf animation that caused an epidemic a few times: http://www.badgerbadgerbadger.com/ )
<xerox> djinnModule type = askLennart ("write a function of this type: " ++ type) >>= \code -> replyBack code
< palomer> grr, sml can't derive Ord < palomer> sml is a pain to use sometimes < palomer> but sometimes it's a joy! < palomer> ugh, I take it back, it's a pain
< pesco> @vixen PHP < lambdabot> hey, who did we fight in WWII besides Germany and Russia?
seen on #perl6:
< azuroth> I did some of my C++ homework in haskell. teacher didn't like that :-( < Kattana> and this surprises you?
<jbc>: Phillipa - a parable: The chinese abacus has 5+2 beads in each column, allowing you to accumulate tens and carry them later. The japanese abacus has 4+1 beads - you carry NOW, dammit, no putting stuff down, don't be lazy. The haskell abacus Only has one bead, and it's not in the column you're using... <Philippa>: jbc: the haskell abacus has all the beads you want on an n-dimensional board and it'll clear up the mess for you <Philippa>: (but you're not allowed to move or change beads you've placed)
<ncalexan> Getting fed up with Haskell and picking up another language is like swapping your Greenpeace spouse for an abusive tyrant. Boy, does vegan sound good after beatings.
"In My Egotistical Opinion, most people's C programs should be indented six feet downward and covered with dirt."
-- Blair P. Houghton
< Bobstopper> Assuming the universe will eventually die of heat death, counting will cease when that happens. So if you start counting now, you'll probably find the largest number (so long as nobody else has found a larger one yet) < Cale> what about faster ways to produce larger numbers? < Bobstopper> not after the heat death you can't :P < dave_m> don't you tell me what I can't do after the heat death of the universe
sigfpe: Haskell is so strict about type safety that randomly generated snippets of code that successfully typecheck are likely to do something useful, even if you've no idea what that useful thing is.
dons: Think of a monad as a spacesuite full of nuclear waste in the ocean next to a container of apples. Now, you can't put oranges in the space suite or the nucelar waste falls in the ocean, but the apples are carried around anyway, and you just take what you need.