algo.generic

dispatch for fmap multimethod shouldn't be on type of second argument

Details

  • Type: Defect Defect
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Completed
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: None
  • Labels:
    None

Description

AFAICT having fmap dispatch on the type of the second argument makes it practically impossible to define fmap for arbitrary functions, since the type is different for each function:

user> (type type)
clojure.core$type
user> (type fn?)
clojure.core$fn_QMARK_
user> (type not=)
clojure.core$not_EQ_
user>

However, there's a perfectly reasonable definition of fmap for functions (fmap = comp).

To my mind the simplest/best thing to do is just have a Functor protocol and have fmap call a function in it, with the order of arguments reversed so that dispatch will happen correctly.

Activity

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: