PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Wednesday, May 18, 2022

[FIXED] How can I check if function is a partial?

 May 18, 2022     clojure, currying, partial     No comments   

Issue

Is there a possibility to check if something is a partial function in Clojure?

It would be best to have something like (partial? (partial + 10)) ?

Thanks in advance


Solution

No, because functions created by partial are just "normal" functions. You could however use some metadata for it, like this:

(defn partial2 [f & more]
  (with-meta (apply partial f more) {:partial true}))

(def partial-plus (partial2 + 1 2))

(meta partial-plus) ;;=> {:partial true}

Haven't really thought through the consequences of this approach though...

Kotarak came up with a nicer solution that works, but not always. For example take this:

(partial? (partial + 1)) ;;=> true
(partial? (partial + 1 2)) ;;=> false

This works:

(defn partial? [f]
  (let [[fst snd] (-> (class f) (.getName) (string/split #"\$"))]
    (= ["clojure.core" "partial"] [fst snd])))

with string/split being the split function from clojure.string (1.3) or clojure.contrib.str-utils2 (1.2).



Answered By - Michiel Borkent
Answer Checked By - Marilyn (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing