diff --git a/ihaskell-display/ihaskell-aeson/ihaskell-aeson.cabal b/ihaskell-display/ihaskell-aeson/ihaskell-aeson.cabal
index efb2f310..a36c028f 100644
--- a/ihaskell-display/ihaskell-aeson/ihaskell-aeson.cabal
+++ b/ihaskell-display/ihaskell-aeson/ihaskell-aeson.cabal
@@ -57,7 +57,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
here,
classy-prelude >=0.7,
aeson >= 0.7,
diff --git a/ihaskell-display/ihaskell-basic/ihaskell-basic.cabal b/ihaskell-display/ihaskell-basic/ihaskell-basic.cabal
index 5e04540f..d7d5c909 100644
--- a/ihaskell-display/ihaskell-basic/ihaskell-basic.cabal
+++ b/ihaskell-display/ihaskell-basic/ihaskell-basic.cabal
@@ -61,7 +61,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
ihaskell >= 0.4
diff --git a/ihaskell-display/ihaskell-blaze/ihaskell-blaze.cabal b/ihaskell-display/ihaskell-blaze/ihaskell-blaze.cabal
index d0d3593e..a08b5ba0 100644
--- a/ihaskell-display/ihaskell-blaze/ihaskell-blaze.cabal
+++ b/ihaskell-display/ihaskell-blaze/ihaskell-blaze.cabal
@@ -61,7 +61,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
blaze-html >= 0.6,
blaze-markup >= 0.5,
diff --git a/ihaskell-display/ihaskell-charts/ihaskell-charts.cabal b/ihaskell-display/ihaskell-charts/ihaskell-charts.cabal
index eb7c5fd9..457cea11 100644
--- a/ihaskell-display/ihaskell-charts/ihaskell-charts.cabal
+++ b/ihaskell-display/ihaskell-charts/ihaskell-charts.cabal
@@ -58,7 +58,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
bytestring,
data-default-class,
diff --git a/ihaskell-display/ihaskell-diagrams/ihaskell-diagrams.cabal b/ihaskell-display/ihaskell-diagrams/ihaskell-diagrams.cabal
index 17130d7d..251323d2 100644
--- a/ihaskell-display/ihaskell-diagrams/ihaskell-diagrams.cabal
+++ b/ihaskell-display/ihaskell-diagrams/ihaskell-diagrams.cabal
@@ -58,7 +58,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
bytestring,
directory,
diff --git a/ihaskell-display/ihaskell-hatex/ihaskell-hatex.cabal b/ihaskell-display/ihaskell-hatex/ihaskell-hatex.cabal
index 5990a2b3..a25cdf84 100644
--- a/ihaskell-display/ihaskell-hatex/ihaskell-hatex.cabal
+++ b/ihaskell-display/ihaskell-hatex/ihaskell-hatex.cabal
@@ -14,7 +14,7 @@ cabal-version: >=1.16
library
exposed-modules: IHaskell.Display.Hatex
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
text,
HaTeX >= 3.9,
ihaskell >= 0.4
diff --git a/ihaskell-display/ihaskell-juicypixels/ihaskell-juicypixels.cabal b/ihaskell-display/ihaskell-juicypixels/ihaskell-juicypixels.cabal
index 08288a77..fd7ae561 100644
--- a/ihaskell-display/ihaskell-juicypixels/ihaskell-juicypixels.cabal
+++ b/ihaskell-display/ihaskell-juicypixels/ihaskell-juicypixels.cabal
@@ -62,7 +62,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
bytestring,
directory,
diff --git a/ihaskell-display/ihaskell-magic/ihaskell-magic.cabal b/ihaskell-display/ihaskell-magic/ihaskell-magic.cabal
index 5866d9a0..a6ba8496 100644
--- a/ihaskell-display/ihaskell-magic/ihaskell-magic.cabal
+++ b/ihaskell-display/ihaskell-magic/ihaskell-magic.cabal
@@ -61,7 +61,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
classy-prelude >=0.6,
magic >= 1.0.8,
text,
diff --git a/ihaskell-display/ihaskell-parsec/ihaskell-parsec.cabal b/ihaskell-display/ihaskell-parsec/ihaskell-parsec.cabal
index cf6cd0e2..7b382b24 100644
--- a/ihaskell-display/ihaskell-parsec/ihaskell-parsec.cabal
+++ b/ihaskell-display/ihaskell-parsec/ihaskell-parsec.cabal
@@ -57,7 +57,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
aeson ==0.7.*,
unordered-containers,
classy-prelude,
diff --git a/ihaskell-display/ihaskell-widgets/ihaskell-widgets.cabal b/ihaskell-display/ihaskell-widgets/ihaskell-widgets.cabal
index 3cc118df..dc467f31 100644
--- a/ihaskell-display/ihaskell-widgets/ihaskell-widgets.cabal
+++ b/ihaskell-display/ihaskell-widgets/ihaskell-widgets.cabal
@@ -58,7 +58,7 @@ library
OverloadedStrings
-- Other library packages from which modules are imported.
- build-depends: base ==4.6.*,
+ build-depends: base ==4.6.* || ==4.7.*,
aeson ==0.7.*,
classy-prelude,
here,
diff --git a/notebooks/IHaskell.ipynb b/notebooks/IHaskell.ipynb
index 63ce263a..69c647c4 100644
--- a/notebooks/IHaskell.ipynb
+++ b/notebooks/IHaskell.ipynb
@@ -10,7 +10,9 @@
"cells": [
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"\n",
"\n",
@@ -53,7 +55,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"As you can see, each input cell get an execution number. The first input cell is labeled `In [1]`. Just like in GHCi, the output of the last executed statement or expression is available via the `it` variable - however, in addition, the output of the $n$th cell is available via the `itN` variable. For example, if we wanted to see what the first cell printed, we can go ahead and output that:"
]
@@ -79,7 +83,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"In addition to simple code cells such as the ones you see, you can also have other types of cells. All of this inline text, for instance, is written using Markdown cells, which support the majority of Github markdown syntax. This lets you embed images and formatting and arbitrary HTML interspersed with your Haskell code. In addition, you can export these notebooks into HTML or even as presentations using `reveal.js`. \n",
"\n",
@@ -112,7 +118,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"In addition to multi-line expressions, IHaskell supports most things that you could put in a standard Haskell file. For example, we can have function bindings without the `let` that GHCi requires. (As long as you group type signatures and their corresponding declarations together, you can use pattern matching and put signatures on your top-level declarations!)"
]
@@ -129,7 +137,9 @@
"thing \"ah\" 10"
],
"language": "python",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"outputs": [
{
"metadata": {},
@@ -150,7 +160,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"So far we've just looked at pure functions, but nothing is stopping us from doing IO."
]
@@ -176,7 +188,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"IHaskell supports most GHC extensions via the `:extension` directive (or any shorthand thereof)."
]
@@ -194,13 +208,13 @@
"outputs": [
{
"html": [
- "`Thing' has no constructors (-XEmptyDataDecls permits this)
In the data declaration for `Thing'"
+ "\u2018interactive:Ghci148.Thing\u2019 has no constructors (EmptyDataDecls permits this)
In the data declaration for \u2018interactive:Ghci148.Thing\u2019"
],
"metadata": {},
"output_type": "display_data",
"text": [
- "`Thing' has no constructors (-XEmptyDataDecls permits this)\n",
- "In the data declaration for `Thing'"
+ "\u2018interactive:Ghci148.Thing\u2019 has no constructors (EmptyDataDecls permits this)\n",
+ "In the data declaration for \u2018interactive:Ghci148.Thing\u2019"
]
}
],
@@ -221,7 +235,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"Data declarations do pretty much what you expect, and work fine on multiple lines. If a declaration turns out to be not quite what you wanted, you can just go back, edit it, and re-evaluate the code cell."
]
@@ -253,7 +269,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"Although this doesn't hold everywhere, we've tried to keep IHaskell relatively similar to GHCi in terms of naming. So, just like in GHCi, you can inspect types with `:type` (or shorthands):"
]
@@ -270,12 +288,12 @@
"outputs": [
{
"html": [
- "forall a. Num a => a"
+ "3 + 3 :: forall a. Num a => a"
],
"metadata": {},
"output_type": "display_data",
"text": [
- "forall a. Num a => a"
+ "3 + 3 :: forall a. Num a => a"
]
}
],
@@ -283,7 +301,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"The same goes for the `:info` command. However, unlike GHCi, which simply prints info, the IHaskell notebook brings up a separate pane."
]
@@ -307,7 +327,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"If you're looking at this notebook after it's been exported to HTML, you won't be able to see this interactive pane. However, it looks approximately like this:\n",
"\n",
@@ -316,7 +338,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"We can now write slightly more complicated scripts."
]
@@ -352,7 +376,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"This is where the similarities with GHCi end, and the particularly shiny features of IHaskell begin.\n",
"\n",
@@ -372,7 +398,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"If we were playing around with designing GUI applications, for instance, we might want to actually *see* these colors, instead of just seeing the text \"Red\", \"Green\", and \"Blue\" when we are debugging.\n",
"\n",
@@ -402,7 +430,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"Once we define a custom `display :: a -> IO Display` function, we can simply output a `Color`:"
]
@@ -444,7 +474,9 @@
},
{
"cell_type": "markdown",
- "metadata": {},
+ "metadata": {
+ "hidden": false
+ },
"source": [
"The `DisplayData` type has several constructors which let you display your data as plain text, HTML, images (SVG, PNG, JPG), or even as LaTeX code.\n",
"\n",
@@ -490,19 +522,12 @@
},
{
"html": [
- "
\n", - " This is an example of BlazeMarkup syntax.\n", - "
\n", - " \n", - " Hello\n", - " \n", - "\n", - " This is an example of BlazeMarkup syntax.\n", - "
\n", - " \n", - " Hello\n", - " \n", - "