haskell - Assigning Asc/ Desc to variable later causes a compiler error -
i getting compiler error when try have like:
getorder :: text -> selectopt event getorder text = case text of "id" -> direction eventid "title" -> direction eventtitle direction = if text == "id" desc else asc if change line, work:
where direction = asc same if change case - work:
case text of "id" -> desc eventid "title" -> asc eventtitle so question why assigning asc , desc cause compiler error?
make direction function , move top-level:
direction text = if text == "id" desc else asc see updown function in answer:
https://stackoverflow.com/a/37380039/866915
update
in order direction eventid make sense, direction has have type:
direction :: entityfield event int in order direction eventtitle make sense has have type:
direction :: entityfield event string so if direction defined in clause this
where direction = if ... asc else desc it can't satisfy both type constraints. however, if make function:
direction t = if t == "id" asc else desc then polymorphic. means direction ... can have different types @ different call sites.
update
to use original code, try adding type signature:
where direction :: entityfield r t -> selectopt r direction = if text == "id" desc else asc
Comments
Post a Comment