DSLΒΆ

The module hymn.dsl provides types and functions from other modules of this package, so that they can be imported all at once easily.

Python

from hymn.dsl import *

Hy

(import [hymn.dsl [*]])

This module also provides all the macros defined in other modules,

(require [hymn.dsl [*]])

is all you need to use any macro defined in Hymn

Note

Some of the function are renamed to more descriptive one to avoid name clash, examples are hymn.types.reader.lookup() and hymn.types.state.lookup()

The entire source code of this module is listed here for reference:


(import
  [hymn.types.monoid [<> append]]
  [hymn.types.continuation
    [Continuation cont-m continuation-m
     call-cc
     run :as run-cont]]
  [hymn.types.either
    [Either either-m
     Left Right left? right? either failsafe]]
  [hymn.types.identity [Identity identity-m]]
  [hymn.types.lazy [Lazy lazy-m evaluate :as evaluate-lazy force lazy?]]
  [hymn.types.list [List fmap list-m]]
  [hymn.types.maybe
    [Maybe maybe-m
     Just Nothing <-maybe ->maybe from-maybe maybe nothing? to-maybe]]
  [hymn.types.reader
    [Reader reader-m
     reader
     <- :as <-r
     ask ask :as get-env
     asks asks :as get-env-with
     local local :as use-env-with
     lookup :as lookup-reader
     run :as run-reader]]
  [hymn.types.state
    [State state-m
     <-state get-state set-state state<-
     <- :as <-s
     evaluate :as evaluate-state
     execute :as execute-state
     gets gets :as get-state-with
     lookup :as lookup-state
     modify modify :as modify-state-with
     run :as run-state
     set-value set-value :as set-state-value
     set-values set-values :as set-state-values
     update update :as update-state-value-with
     update-value update-value :as update-state-value]]
  [hymn.types.writer
    [ComplexWriter complex-writer-m
     DecimalWriter decimal-writer-m
     FloatWriter float-writer-m
     FractionWriter fraction-writer-m
     ListWriter list-writer-m
     IntWriter int-writer-m
     StringWriter string-writer-m
     TupleWriter tuple-writer-m
     censor listen tell writer
     writer-with-type
     writer-with-type-of
     run :as run-writer
     execute :as execute-writer]]
  [hymn.operations
    [k-compose <=< k-pipe >=> lift m-map replicate sequence]])

;;; reader macro for the continuation monad
(require [hymn.types.continuation [<]])

;;; reader macro for the either monad
(require [hymn.types.either [|]])

;;; macros for the lazy monad
(require [hymn.types.lazy [lazy]])

;;; reader macro for the list monad
;;; NOTE: this in fact pulls in all macros instead of the one named '*'
(require [hymn.types.list [*]])

;;; reader macro for the maybe monad
(require [hymn.types.maybe [?]])

;;; reader macro for the writer monad
(require [hymn.types.writer [+]])

;;; macros for monad operations
(require
  [hymn.macros
    [^ =
     do-monad
     do-monad-m
     do-monad-with
     m-for
     m-when
     monad->
     monad->>
     monad-comp
     with-monad]])