The function passed to (defmulti) must take the same args as (defmethod).

Try this:

(defmulti halt
  (fn [_ _]
    (let [os (System/getProperty "os.name")]
      (if (.startsWith os "Mac OS") :Linux  (keyword os)))))

AJ

On Mon, May 7, 2012 at 4:53 PM, Jim - FooBar(); <jimpil1...@gmail.com> wrote:
> Following my earlier post, i tried converting the working shutdown
>  function into a multi-method in order to make it cleaner to read... However
> for some reason the compiler is complaining and i can't pinpoint wheere the
> problem is! This is the multi-method:
> ------------------------------------------------------------------------------------------------------------------------------------
> (defmulti halt
> (fn []
> (let [os (System/getProperty "os.name")]
>   (if (.startsWith os "Mac OS") :Linux  (keyword os)))))
>
> (defmethod halt :Linux [root-pwd minutes-after]
>    (clojure.java.shell/sh
>    "sudo" "-S" "shutdown" (str "+" minutes-after) :in (str root-pwd "\n")))
>
> (defmethod halt :Windows [_ minutes-after]
>    (clojure.java.shell/sh "shutdown" "-s" "-t"  (str minutes-after)))
>
> (defmethod halt :Solaris [root-pwd seconds-after]
>    (clojure.java.shell/sh "shutdown" "-S" "-y" (str "-g" seconds-after) "-i"
> "S" :in (str root-pwd "\n")))
>
> (defmethod halt :default [] (println "Unsupported operating system!"))
> -------------------------------------------------------------------------------------------------------------------------------------
>
> when calling (halt "some-password" 1) i'm getting this:
>
> java.lang.IllegalArgumentException: Wrong number of args (2) passed to:
> user$eval664$fn (NO_SOURCE_FILE:0)
>
> the same happens no matter how many args i pass in! this is very strange!
>
> thanks in advance...
>
> Jim
>
>
>
>
>
>
>
>
> On 07/05/12 19:52, Jim - FooBar(); wrote:
>
> Good stuff... :-)
>
> Jim
>
> On 07/05/12 19:51, Armando Blancas wrote:
>>
>> Can someone please verify that it works on windows as well???
>>
>
> It works on XP.
>
> --
> 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
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
>
>
>
> --
> 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
> Note that posts from new members are moderated - please be patient with your
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
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
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to