Popularity
7.4
Stable
Activity
0.0
Stable
24
3
4
Monthly Downloads: 8
Programming language: Haskell
License: BSD 3-clause "New" or "Revised" License
Tags:
Development
Latest version: v4.1.0
present alternatives and similar packages
Based on the "Development" category.
Alternatively, view present alternatives based on common mentions on social networks and blogs.
-
structured-haskell-mode
Structured editing minor mode for Haskell in Emacs -
haskell-lsp
Haskell library for the Microsoft Language Server Protocol -
criterion
A powerful but simple library for measuring the performance of Haskell code. -
stgi
A user-centric visual STG implementation to help understand GHC/Haskell's execution model. -
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
inline-c
Write Haskell source files including C code inline. No FFI required. -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome! -
inline-java
Haskell/Java interop via inline Java code in Haskell modules. -
gi-atk
Generate Haskell bindings for GObject-Introspection capable libraries -
scion
OLD, DEPRECATED: Use this instead https://github.com/haskell/haskell-ide-engine -
lambdabot-core
A friendly IRC bot and apprentice coder, written in Haskell.
Learn any GitHub repo in 59 seconds
Onboard AI learns any GitHub repo in minutes and lets you chat with it to locate functionality, understand different parts, and generate new code. Use it for free at www.getonboard.dev.
Promo
getonboard.dev
Do you think we are missing an alternative of present or a related project?
Popular Comparisons
README
present
Make presentations for data types.
Install
Requires: GHC 7.10.3
Install globally into your GHC's global database (via stack) with:
$ sh install-to-global-db.sh
To remove it later:
$ sh remove-from-global-db.sh
To be added: install via stack install present
, but it needs to be
added to an LTS/nightly version first.
Customizing GHCi
Add to the following to your ~/.ghci
:
:seti -XTemplateHaskell
:def presentDebug \e -> return ("let it = " ++ e ++ "\n$(Present.presentIt)")
:def presentQualified \e -> return ("let it = " ++ e ++ "\nPrelude.putStrLn (Present.toShow True $(Present.presentIt))")
:def present \e -> return ("let it = " ++ e ++ "\nPrelude.putStrLn (Present.toShow False $(Present.presentIt))")
:set -package present
Usage
bash-3.2$ stack exec ghci
GHCi, version 7.10.3: http://www.haskell.org/ghc/ :? for help
package flags have changed, resetting and loading new packages...
λ> :present "hi"
"hi"
λ> :present 123
123
λ> :present (5.2,"hi",1,'a')
(5.2,"hi",1,'a')
λ> data X a = X a Int
λ> :present X 5 1
X 5 1
λ> :present S88.pack "hi"
"hi"
λ> :present print
<a_0 -> GHC.Types.IO ()>
λ> :present print ()
IO (<GHC.Prim.State# GHC.Prim.RealWorld -> (GHC.Prim.State# GHC.Prim.RealWorld, a_0)>)
λ> :present undefined
<_ :: t_0>
λ> :present id
<a_0 -> a_0>
λ> :present [undefined]
[<_ :: t_0>]
Extension
You can write your own instances like this:
λ> data X = X Int
λ> :present X 5
X 5
λ> instance Present0 X where present0 = ("X",\(X x) -> IntegerPresentation "X" (show x))
λ> :present X 5
5
Detailed output
λ> :presentDebug (2.5,"hi",1,'a')
TuplePresentation
"(GHC.Types.Double,GHC.Base.String,GHC.Integer.Type.Integer,GHC.Types.Char)"
[ChoicePresentation
"GHC.Types.Double"
[("Floating",IntegerPresentation "GHC.Types.Double" "2.5")
,("Show",IntegerPresentation "GHC.Types.Double" "2.5")
,("Rational",IntegerPresentation "GHC.Types.Double" "5/2")
,("Internal"
,DataTypePresentation "GHC.Types.Double"
"GHC.Types.D#"
[PrimitivePresentation "GHC.Prim.Double#"])]
,ChoicePresentation
"String"
[("String",StringPresentation "String" "hi")
,("List of characters"
,ListPresentation
"[GHC.Types.Char]"
[ChoicePresentation
"GHC.Types.Char"
[("Character",CharPresentation "GHC.Types.Char" "h")
,("Unicode point"
,ChoicePresentation
"GHC.Types.Char"
[("Decimal",IntegerPresentation "GHC.Types.Char" "104")
,("Hexadecimal",IntegerPresentation "GHC.Types.Char" "68")
,("Binary",IntegerPresentation "GHC.Types.Char" "1101000")])
,("Internal"
,DataTypePresentation "GHC.Types.Char"
"GHC.Types.C#"
[PrimitivePresentation "GHC.Prim.Char#"])]
,ChoicePresentation
"GHC.Types.Char"
[("Character",CharPresentation "GHC.Types.Char" "i")
,("Unicode point"
,ChoicePresentation
"GHC.Types.Char"
[("Decimal",IntegerPresentation "GHC.Types.Char" "105")
,("Hexadecimal",IntegerPresentation "GHC.Types.Char" "69")
,("Binary",IntegerPresentation "GHC.Types.Char" "1101001")])
,("Internal"
,DataTypePresentation "GHC.Types.Char"
"GHC.Types.C#"
[PrimitivePresentation "GHC.Prim.Char#"])]])]
,ChoicePresentation
"GHC.Integer.Type.Integer"
[("Decimal",IntegerPresentation "GHC.Integer.Type.Integer" "1")
,("Hexadecimal",IntegerPresentation "GHC.Integer.Type.Integer" "1")
,("Binary",IntegerPresentation "GHC.Integer.Type.Integer" "1")
,("Internal"
,DataTypePresentation "GHC.Integer.Type.Integer"
"GHC.Integer.Type.S#"
[PrimitivePresentation "GHC.Prim.Int#"])]
,ChoicePresentation
"GHC.Types.Char"
[("Character",CharPresentation "GHC.Types.Char" "a")
,("Unicode point"
,ChoicePresentation
"GHC.Types.Char"
[("Decimal",IntegerPresentation "GHC.Types.Char" "97")
,("Hexadecimal",IntegerPresentation "GHC.Types.Char" "61")
,("Binary",IntegerPresentation "GHC.Types.Char" "1100001")])
,("Internal"
,DataTypePresentation "GHC.Types.Char"
"GHC.Types.C#"
[PrimitivePresentation "GHC.Prim.Char#"])]]