Loading ...
Sorry, an error occurred while loading the content.

Re: [extremeperl] Book: Higher Order Perl

Expand Messages
  • Shae Matijs Erisson
    ... I don t think you would get the same benefits from using an expert system as a type system. The HM type system has various guarantees (like termination)
    Message 1 of 58 , Mar 31, 2005
      Rob Nagler <nagler@...> writes:

      > You are using a type system for machine reasoning. The Haskell
      > evaluator is but one type of inference engine. You probably could use
      > Mycin just as easily. There's a Mycin implemenation available in Ruby
      > which is a 180 NCLOC. I didn't see one for Perl, but I don't think it
      > would be too hard to convert the Ruby to Perl.

      I don't think you would get the same benefits from using an expert system as a
      type system. The HM type system has various guarantees (like termination) that
      are important for a usable type system.
      Anyway, I doubt type theory is on-topic here.

      > In XP, we call this Big Design Up Front. It implies that you are
      > already a domain and programming expert. This combination is
      > extremely rare, if it ever happens. It is also sets up a poor
      > communication scenario with the customer, because you have to either
      > sit in a corner learning the domain for an extended period of time, or
      > you have to say to the customer, "I get it, and leave me alone".

      I don't believe this is true in Haskell. Using any monad in Haskell is both
      extending the Haskell language itself, and defining a DSL as well.
      One reason monads are so popular in Haskell is that they allow you to define
      pieces of a DSL separately and then stack them on top of each other easily.
      This is a *much* bigger deal than you may think upon first read.
      I can add new features to my DSL by wrapping it into another monad
      Examples are monad transformers for errors, continuations, state, failure,
      read-only state, and write-only state. And you can make any monad you create a
      transformer as well. That means DSLs in Haskell do not require big design
      upfront. Monads encourage you to separate concerns into their own
      self-contained chunk that can then be reused separately.
      For details see http://www.cse.ogi.edu/~mpj/pubs/modinterp.html and

      > Well-designed systems get that way, because end-users give continuous
      > feedback, and the programmers listen carefully and adapt the system to
      > meet the users needs, which they can't possibly know in advance.

      Yeah, I totally agree that well-designed systems require iteration between the
      customers who use the systems and the programmers who write them.
      There are some neat papers about this from the Smalltalk refactoring people.
      'Refactoring your way to Frameworks' or something to that effect.
      Programming is the Magic Executable Fridge Poetry, | www.ScannedInAvian.com
      It is machines made of thought, fueled by ideas. | -- Shae Matijs Erisson
    • Tom Vilot
      ... Wait. That sounds like Rob .... ;c) (kidding) ... Wait. That *also* sounds like Rob ... ... (not kidding!)
      Message 58 of 58 , Apr 8, 2005
        Greg C wrote:

        > Consider: projects A and B have identical goals. In project A, you
        > have free
        > rein in your choice of software and hardware tools. However, the
        > manager sets
        > arbitrary deadlines, likes to stand behind people and criticize their
        > code as
        > they type,

        Wait. That sounds like Rob ....
        ;c) (kidding)

        > On project B, the choice of langauge and hardware are made for you and
        > there's
        > only one computer per two programmers. On the other hand, the manager
        > sees his
        > people as people, negotiates requirements and schedules on a realistic
        > basis,
        > trusts his people, follows a set of best practices (be it XP or some
        > other) and
        > chases everyone out of the office at 5:30.

        Wait. That *also* sounds like Rob ...


        (not kidding!)
      Your message has been successfully submitted and would be delivered to recipients shortly.