Skip to content

Sum types with aliases #33

Description

@dfrese

Defining sum types does not work when aliasing types or predicates in match expressions, in ClojureScript at least:

(require '[active.clojure.sum-type :as st :include-macros true])
(require '[active.clojure.cljs.record :as rec :include-macros true])

(rec/define-record-type T {:rtd-record? true} (make-t) t? [])
(st/define-sum-type S1 s? [T])
(def S2 S1)
(st/define-sum-type S2 s? [T])
(def T2 T)
(st/define-sum-type S2 s? [T2])

Compile Exception: rtd-record or sum-type required, found: T2

A similar error is raised when using an alias of t? in a match expression.

This is quite a burden for code reuse/abstraction, and should be fixed if possible.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions