derive-is-data-con: This package generates data constructor predicate functions

[ bsd3, development, library ] [ Propose Tags ] [ Report a vulnerability ]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), template-haskell [details]
License BSD-3-Clause
Copyright 2025 Zhang Song
Author Zhang Song
Maintainer Haskell.Zhang.Song `at` hotmail.com
Category Development
Home page https://github.com/HaskellZhangSong/derive-is-data-con#readme
Bug tracker https://github.com/HaskellZhangSong/derive-is-data-con/issues
Source repo head: git clone https://github.com/HaskellZhangSong/derive-is-data-con
Uploaded by songzh at 2025-02-22T12:51:33Z
Distributions
Downloads 13 total (13 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for derive-is-data-con-0.1.0.0

[back to package description]

derive-is-data-con

This package will generate data constructor predicate functions

    derive_is ''Bool
  ======>
    isFalse :: Bool -> Bool
    isTrue :: Bool -> Bool
    isFalse False = True
    isFalse _ = False
    isTrue True = True
    isTrue _ = False

Above code will generate isTrue and isFalse functions. The function is 'is' + data constructor.

For operators, there is a function that translates to string

charToString :: Char -> String
charToString '~' = "Tilde"
charToString '!' = "Bang"
charToString '@' = "At"
charToString '#' = "Hash"
charToString '$' = "Dollar"
charToString '%' = "Percent"
charToString '^' = "Caret"
charToString '&' = "And"
charToString '*' = "Star"
charToString '-' = "Minus"
charToString '+' = "Plus"
charToString '=' = "Equal"
charToString '|' = "Pipe"
charToString '\\' = "Backslash"
charToString '/' = "Slash"
charToString '<' = "Lt"
charToString '>' = "Gt"
charToString ':' = "Colon"
charToString '?' = "Question"
charToString '.' = "Dot"
-- charToString '[' = "LSquareBracket" -- I do not want to support derive_is ''[]. One should use null function instead.
-- charToString ']' = "RSquareBracket"

For example (:=:) will be translated into isColonStarColon function

For gadt data type

data Gadt a b where
    (:*:), (:=:)  :: a -> b -> Gadt a b

The following code will be generated:

    derive_is ''Gadt 
  ======>
    isColonStarColon :: Gadt a_a54E a_a54F -> Bool
    isColonEqualColon :: Gadt a_a54G a_a54H -> Bool
    isColonStarColon ((:*:) _ _) = True
    isColonStarColon _ = False
    isColonEqualColon ((:=:) _ _) = True
    isColonEqualColon _ = False