(defmulti fib (fn [x] x) :default)
(defmethod fib 0 [x] 0)
(defmethod fib 1 [x] 1)
(defmethod fib :default [n] (+ (fib (- n 2)) (fib (- n 1))))

seems to do the trick.

On Wed, Nov 19, 2008 at 1:25 PM, Kyle R. Burton <[EMAIL PROTECTED]> wrote:
>
> I have no idea how much effort it would be, but I've found the common
> lisp pcond library to be useful for pattern matching and a few other
> use cases:
>
>  http://www.cliki.net/pcond
>
> I'd also like to see support for value based as well as structural
> shape based pattern matching.
>
>
> Regards,
>
> Kyle
>
> On Wed, Nov 19, 2008 at 4:16 PM, Mark Volkmann
> <[EMAIL PROTECTED]> wrote:
>>
>> I'm reading an excellent article on functional programming at
>> http://www.defmacro.org/ramblings/fp.html. Toward the end there is a
>> section on pattern matching. They give the following example which
>> uses a fictional, Java-like syntax. Can Clojure do something like this
>> where the fib function is overloaded using "patterns" instead of
>> arity?
>>
>> int fib(0) { return 1; }
>>
>> int fib(1) { return 1; }
>>
>> int fib(int n) {
>>    return fib(n - 2) + fib(n - 1);
>> }
>>
>> --
>> R. Mark Volkmann
>> Object Computing, Inc.
>>
>> >
>>
>
>
>
> --
> ------------------------------------------------------------------------------
> Wisdom and Compassion are inseparable.
>        -- Christmas Humphreys
> [EMAIL PROTECTED]                            http://asymmetrical-view.com/
> ------------------------------------------------------------------------------
>
> >
>



-- 
The Mafia way is that we pursue larger goals under the guise of
personal relationships.
    Fisheye

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to