It's Like Déjà Vu All Over Again
"You could probably waste an entire day on the preceding links alone. But why take chances? We also give you Paul Snively..." — John Wiseman, lemonodor


Click to see the XML version of this web page.

Click here to send an email to the editor of this weblog.

Click on the coffee mug to add Paul Snively's Instant Outline to your Radio UserLand buddy list.

Top 10 hits for composing monads on..
Google
1.Building Interpreters by Composing Monads - Steele ( ...
2.Composing monads - Mark, Duponcheel, December (ResearchIndex)
3.Citation details: Building interpreters by composing monads - ...
4.Building Interpreters by Transforming Stratified Monads - ...
5.Composing Monads
6.Composing monads
7.From Inheritance to Feature Interaction or Composing Monads
8.Monads and Arrows: Theory and Applications
9.Monads and Arrows: Theory and Applications
10.David Espinosa

Help link 6/1/02; 9:11:22 AM.

currently subscribed to:

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Patrick Beard (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. A Frog in the Valley. Communication + Technologies (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Aaron Swartz: The Weblog (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Advogato (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. All Things Distributed (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. bOing bOing (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Dave Winer: Radio UserLand (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. David McCusker (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Digital Identity (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Doc Searls Weblog (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Eclectic (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Flutterby! (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. freshmeat.net (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. From the Desktop of Dane Carlson (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Hack the Planet (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Inspirational Technology (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. iRights (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Java Geek (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Joel on Software (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. John Robb's Radio Weblog (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Jon's Radio (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Lambda the Ultimate (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Living Code (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. mac.scripting.com (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. osOpinion (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Patrick Logan's Radio Weblog (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Privacy Digest (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. rebelutionary (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Robot Wisdom (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Roland Tanglao's Weblog (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. saladwithsteve (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Scobleizer (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Scripting News (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Sjoerd Visscher's weblog - w3future.com (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. TidBITS (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Tomalak's Realm (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Transhumanism (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. WebTransmission (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Wired News (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. Workbench (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. xmlhack (rss)

Radio UserLand users: click to subscribe. Other folks: use the RSS link to acquire this channel. YACCS Comments for It's Like Déjà Vu All Over Again (rss)

Here's how this works.


Saturday, May 11, 2002
 

From my comments:
There are some inconsistencies and restrictions in python that get to me. e.g., len as a function instead of a method, statements vs. expressions (which really hurts in the cases of if and lambda), no stream-based I/O.

A deep reliance on reference counting GC makes me uneasy. The object system is nice and simple, but also seems underpowered (requiring explicit calls to parent class constructors seems strange to me, and I don't think there's any way to call *all* parent constructors in the face of multiple inheritance).

Python has lots of strengths (sooo many libraries, easily extendable from C, easily embeddable), but it certainly does not dare to be more than a scripting language.

-jjwiseman

This is a considerably more on-point set of examples than I could come up with off the cuff. Thanks, John!
11:54:40 AM        


From my comments. There's a lot here, so I'll go piece by piece:
Out of curiousity, what exactly don't you like about Python? (It may be easier just to find someone you agree with and point to them ;-) )

You're right. John Wiseman has done an excellent job of summarizing in a later comment that I'll quote later (meaning that it will show up on my blog higher than this does, so you'll likely have already read it).

Python is certainly on the pragmatic side of things, but it seems to me to be a pretty decent language for what it is. (It's still a glue/scripting language, it should be judged as such.)

An excellent point that helps me sharpen my perceptions, so thank you. I supppose my main problem is that I think that glue/scripting languages should be minimalistic and extremely clean in their semantics. The point should be to have an extremely general Turing-complete kernel and an excellent FFI (Foreign-Function Interface). Of course, to be maximally useful, this minimal kernel + FFI needs a good library of code using the FFI to provide access to popular OS calls (POSIX etc.) and popular libraries (HTTP tools, XML tools, etc.)

Python, I think, wins on most fronts except generality and minimalism. Its lambda is, IMHO, rather arbitrarily broken, and as a consequence the language has too many other primitives. Also, I don't find its performance (even for an interpreter) satisfactory. And finally, as a matter of aesthetics, I disagree vehemently with the choice of whitespace-as-block-structure. I have to admit that this surprises me, since I love outliners and folding editors. But apparently I want to be able to impose this structure rather than have this structure imposed on me. Hmmm.

So you may ask, what's a good alternative? Two that I can think of offhand are Lua and Ruby. Both seem more regular (that is, orthogonal, lower exception:rule ratio) than Python. Both have the characteristics I've described above. Both are open-source, portable, compact, and relatively easy to embed (Lua, I would say, ridiculously so).

Of course, I shouldn't ignore Scheme, which still sets the standard for minimalist languages. The only reason Scheme doesn't win on all fronts is that most folks can't bear the (lack of) syntax. If that's not an issue, then MzScheme is an excellent embeddable Scheme with real-world features like threads, regular expressions, sockets, full-featured libraries, etc.

Personally, I find it easy to write clean programs in. Perhaps it doesn't encourage it as much as it should; but then, I don't believe a language should do more then enable a paradigm; it frustrates me when I'm 'encouraged' to use the wrong paradigm by my language choice.

I agree with this wholeheartedly. So why does Python make me feel like I'm wearing a straightjacket?

(Then, I tend to mix imperative, functional, and OO pretty freely; perhaps this is a bad thing? I don't think so, but I'm a yung'un yet. ;-) )

Not at all a bad thing. Choose the right tool for the job. The evolution of programming languages is toward being multiparadigm (recently I've written a lot about my surprise at discovering just how good a multiparadigm language C++ actually is)! So there's no reason to be confined to OO, imperative, or functional approaches even within a single language.

To me personally, this is Python's great benefit. It's not the best OO language, it's not the best functional language, it's not the best at much of anything, but it's good enough in each paradigm that with some (but not much) discipline, very good code can be produced.

I believe this. People I know and respect a great deal swear by Python. It hasn't escaped my attention that Mojo Nation was in Python and that Zooko is developing Mnet in it, or that Tim Berners-Lee's CWM is in Python.

Maybe my bottom line on it is that Python is a good enough language to be worth criticizing.

(Python matched me pretty well; I find it hard to imagine liking another language as well on so many levels.)

-Jeremy Bowers

And that's as it should be: there are always a multitude of factors in selecting a language, some of which probably aren't even conscious. Different people will prioritize those factors differently and make different choices. We have the obligation to the folks we're coding for to maximize our productivity (which itself has a plethora of subtle factors, e.g. "comfort" or "pleasure"). That observation alone makes virtually any language selection a sensible one.
11:41:49 AM        


From my comments:
Modern C++ Design is the book that led to my recent renewed respect for C++.

-jjwiseman

Hear, hear. I had a similar revelation upon encountering it. I had heard the cant about "C++ is a multiparadigm language" for years, but I scoffed. Then, in rapid succession, I read "Modern C++ Design," found FC++, the Lambda Library, and Phoenix, and was astonished at what I was missing.

I'm particularly excited about the marriage of Phoenix and LL, which is expected to have support for true closures over native C++ locals. The mind boggles.
11:06:40 AM        


There's some concern that Apple is not allowing the chat client vendors to access the system address book. If so, this is a repeat of the Sidhu mistake. It will end badly for the developers, but it will also end badly for Apple. [Scripting News]

I can't speak for Jaguar—I'm not seeded—but in extant versions of Mac OS X, "~/Library/Addresses/Address Book.addressbook" is a MetaKit database with no funny stuff (e.g. encryption or compression). Feel free to use MetaKit, which has C++, TCL, and Python bindings, to muck with the address book all you want!
10:56:10 AM        


From my comments:
Accelerated C++ worked well for me as a way to update my circa 1992 C++ knowledge. I found it amusing that it explains pointers in terms of iterators; I think that's actually a great approach.

-jjwiseman

I agree wholeheartedly, since a good C++ programmer will be thinking in terms of iterators in preference to pointers (and some of those iterators will be implemented in terms of pointers, but that's an implementation detail).

A lot of people think that some of us who are critical of C++ are critical of pointers. Not necessarily. I am critical of pointer arithmetic, not pointers per se. Iterators are the preferred way to get the (useful, powerful) policy that you're expressing through pointer arithmetic without the (too-close-to-the-machine, error-prone) mechanism of pointer arithmetic.
10:29:29 AM        


From my comments:
Saying no is probably not a good solution. The right thing as I see it is to participate and voice your opinions and reasons what certain things should be done right. The web services movement (or hype whatever you call it) have too many big players in the field such as IBM , Microsoft. In reality, the smaller players will have to join in if not the lost is going to be on the smaller players not the big one. This situation is like the recent case in Taiwan where they are debating whether they should move their high-tech semi-con factories to mainland China. China does not need Taiwan , they are a lot of other investors willing to put their resources and capitals in the booming market. Similarly, there are a lot of smaller players in the web services areana that are willing to work with Microsoft or IBM.

-Hun Boon Teo

All I'm saying no to is RPC via XML over HTTP. I'm all in favor of web services, but I can see why that might not have been clear from my previous post. The bottom line is that I'm firmly in the REST camp. I think we should concentrate our time and energy on crafting an excellent REST-based interoperable framework across all of the languages and environments that currently enjoy XML-RPC and/or SOAP support, and encourage people to use it instead. That's all.

I suppose that I should add that, philosophically, I don't agree that I have to work with Microsoft or IBM or Sun or... I've been a developer for over 20 years now and I have to say that I've done an excellent job of never being dependent upon any one vendor or technology or language or... and I can't understand developers who haven't been successful in this. The only way anyone can lock you in a trunk is if you don't know how trunks and locks work. So learn. That's the best advice I can offer anyone.
10:19:28 AM        


Zooko. Zooko discovered that he's been Shirkified. [Hack the Planet]

I'm super-bummed because I can't make the O'Reilly Conference, even though I'd kinda made plans to over a month ago. But housing never came through, and money's tight at the moment, plus I would have had to have begged time off from the job I've only had for about five months. Not a good combination of things.

Anyway, Zooko's "distnames" is brilliant, but I have to agree with his assessment that Clay Shirky's take might reach a different audience, and that this different audience probably has checkbooks. Zooko's also right to be happy and excited that the ideas are getting broader exposure, because, as I told MarkM, I do think of them as absolutely fundamental (in the same sense that capability security discipline is fundamental) to secure distributed systems.
10:06:50 AM        


The Nice Programming Language. (via Frank)
Nice is a new object-oriented programming language based on Java. It incorporates features from functional programming, and puts into practice state-of-the-art results from academic research. This results in more expressivity, modularity and safety.

Since we're talking about multimethods lately - Nice adds multimethods, parametric polymorphism, first-class functions, and an MLish type system to Java. Allows easy interop with Java (though it's harder to use Nice from Java than Java from Nice). [Lambda the Ultimate]

This sounds really cool. I wonder how it compares with Pizza?
9:57:23 AM        


Using Functional Objects in various languages. Functional Objects are non-mutable objects. When you modify an object it returns the modified object instead of doing it in place.

A problem occurs in statically-typed languages because you can't specialize the return value as wanted/needed.

Also talking about multi-methods...

I tried this after some discussion on comp.lang.functional. I couldn't find a good C++ solution. Some help anyone?

(I hesitated between OOP and functional category, maybe we could choose more than one? :p) [Lambda the Ultimate]

I wonder whether this isn't a job for FC++ or the Lambda Library or Phoenix? I should probably also mention that it appears that the Lambda Library and Phoenix are getting married; the result should have awesome power!
9:51:15 AM        



Click here to visit the Radio UserLand website. © Copyright 2002 Paul Snively.
Last update: 6/1/02; 9:12:27 AM. Comments by: YACCS
May 2002
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Apr   Jun