Name: validated-literals Version: 0.2.0 Homepage: https://github.com/merijn/validated-literals Bug-Reports: https://github.com/merijn/validated-literals/issues Author: Merijn Verstraaten Maintainer: Merijn Verstraaten Copyright: Copyright © 2015 Merijn Verstraaten License: BSD3 License-File: LICENSE Category: Data Cabal-Version: >= 1.10 Build-Type: Simple Tested-With: GHC == 7.8.3 Synopsis: Compile-time checking for partial smart-constructors Description: To disallow invalid input it is common to define (new)types with hidden data constructors. Forcing the user to go through a smart-constructor that enforces invariants and returns @Maybe ResultType@, preventing the construction of data with invalid values. . However, it is __also__ common to want to include literal values of such types in source text. Things of textual literals for HTML, HTTP, etc. In such cases smart-constructors force us to handle potential conversion failures at runtime, or abusing functions like @fromJust@ to break away all the safety smart-constructors provide. All this despite the fact that we can statically know at compile time that the conversion will always succeed or always fails. . This package provides a typeclasses for using TH to validate the correctness of provided literals at compile. This lets you define, e.g., @newtype Even = Even Integer@ and write: . @ x :: Even x = $$(valid 38) @ . This will check, at compile time, that the provided @Integer@ is, in fact, even and unwrap it from @Maybe@, avoiding the runtime check. Extra-Source-Files: examples/ByteString.hs examples/Even.hs examples/Examples.hs Library Default-Language: Haskell2010 GHC-Options: -Wall Default-Extensions: Other-Extensions: DefaultSignatures, FlexibleContexts, MultiParamTypeClasses, TemplateHaskell Exposed-Modules: ValidLiterals ValidLiterals.Class Other-Modules: Build-Depends: base >=4.8 && <4.9 , template-haskell , bytestring >=0.10 && <0.11 Source-Repository head Type: mercurial Location: https://bitbucket.org/merijnv/validated-literals Source-Repository head Type: git Location: git+ssh://github.com:merijn/validated-literals