Popularity
7.4
Stable
Activity
0.0
Stable
24
3
4
Monthly Downloads: 29
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.
-
criterion
A powerful but simple library for measuring the performance of Haskell code. -
structured-haskell-mode
Structured editing minor mode for Haskell in Emacs -
haskell-lsp
Haskell library for the Microsoft Language Server Protocol -
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
stgi
A user-centric visual STG implementation to help understand GHC/Haskell's execution model. -
inline-c
Write Haskell source files including C code inline. No FFI required. -
inline-java
Haskell/Java interop via inline Java code in Haskell modules. -
gi-atk
Generate Haskell bindings for GObject-Introspection capable libraries -
lambdabot-core
A friendly IRC bot and apprentice coder, written in Haskell. -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome! -
scion
OLD, DEPRECATED: Use this instead https://github.com/haskell/haskell-ide-engine
Build time-series-based applications quickly and at scale.
InfluxDB is the Time Series Platform where developers build real-time applications for analytics, IoT and cloud-native services. Easy to start, it is available in the cloud or on-premises.
Promo
www.influxdata.com
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#"])]]