项目作者: KeenS

项目描述 :
deriving facility for Idris
高级语言: Idris
项目地址: git://github.com/KeenS/idris-deriving.git
创建时间: 2021-01-03T10:49:10Z
项目社区:https://github.com/KeenS/idris-deriving

开源协议:MIT License

下载


Deriving facility for Idris

Deriving statement implemented in Elab .
You can derive some interfaces for datatypes by %runElab derive [deriveName, ...] `{{dataType}} .

Currently, Show and Eq is supported.

Because this is implemented in Elaborator Reflaction, you must enabele ElabReflection by %language ElabReflection before writing %runElab ....

  1. import Deriving
  2. -- enable ElabReflection
  3. %language ElabReflection
  4. data Janken = Gu | Choki | Pa
  5. -- implement Show and Eq for Janken
  6. %runElab derive [Show, Eq] `{{Janken}}
  7. data StringMaybe = Some String | None
  8. data Result a b = Ok a | Err b
  9. -- implement Show and Eq for StringMaybe
  10. -- and implement Show and Eq for Result a b
  11. %runElab do
  12. derive [Show, Eq] `{{StringMaybe}}
  13. derive [Show, Eq] `{{Result}}

Installation

  1. git clone https://github.com/KeenS/idris-deriving.git
  2. cd idris-dervinig
  3. idris --install deriving.ipkg

Then add -p deriving flag when compiling your modules.