diff --git a/notebooks/IHaskell.ipynb b/notebooks/IHaskell.ipynb
index 81580608..84875ae7 100644
--- a/notebooks/IHaskell.ipynb
+++ b/notebooks/IHaskell.ipynb
@@ -3,7 +3,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"\n",
@@ -21,7 +22,9 @@
"cell_type": "code",
"execution_count": 1,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -52,7 +55,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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:"
@@ -62,7 +66,9 @@
"cell_type": "code",
"execution_count": 2,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -82,7 +88,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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",
@@ -94,7 +101,9 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -119,7 +128,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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 +139,9 @@
"cell_type": "code",
"execution_count": 4,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -163,7 +175,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"So far we've just looked at pure functions, but nothing is stopping us from doing IO."
@@ -173,7 +186,9 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -193,7 +208,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"IHaskell supports most GHC extensions via the `:extension` directive (or any shorthand thereof)."
@@ -203,7 +219,9 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -290,11 +308,12 @@
".suggestion-name {\n",
"font-weight: bold;\n",
"}\n",
- "‘IHaskell148.Thing’ has no constructors (EmptyDataDecls permits this)
In the data declaration for ‘IHaskell148.Thing’"
+ "<interactive>:1:1: error:
• ‘Thing’ has no constructors (EmptyDataDecls permits this)
• In the data declaration for ‘Thing’"
],
"text/plain": [
- "‘interactive:Ghci148.Thing’ has no constructors (EmptyDataDecls permits this)\n",
- "In the data declaration for ‘interactive:Ghci148.Thing’"
+ ":1:1: error:\n",
+ " • ‘Thing’ has no constructors (EmptyDataDecls permits this)\n",
+ " • In the data declaration for ‘Thing’"
]
},
"metadata": {},
@@ -311,7 +330,9 @@
"cell_type": "code",
"execution_count": 7,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -323,7 +344,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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."
@@ -333,7 +355,9 @@
"cell_type": "code",
"execution_count": 8,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -359,7 +383,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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):"
@@ -369,7 +394,9 @@
"cell_type": "code",
"execution_count": 9,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -474,7 +501,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"The same goes for the `:info` command. However, unlike GHCi, which simply prints info, the IHaskell notebook brings up a separate pane."
@@ -484,7 +512,9 @@
"cell_type": "code",
"execution_count": 10,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -501,7 +531,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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 that pops up after this is evaluated. However, you can disable the interactive pager, and instead just show the output below the cell:"
@@ -511,7 +542,9 @@
"cell_type": "code",
"execution_count": 11,
"metadata": {
- "collapsed": true
+ "collapsed": true,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -523,7 +556,9 @@
"cell_type": "code",
"execution_count": 12,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -623,11 +658,11 @@
" quotRem :: a -> a -> (a, a)\n",
" divMod :: a -> a -> (a, a)\n",
" toInteger :: a -> Integer\n",
+ " {-# MINIMAL quotRem, toInteger #-}\n",
" \t-- Defined in ‘GHC.Real’\n",
"instance Integral Word -- Defined in ‘GHC.Real’\n",
"instance Integral Integer -- Defined in ‘GHC.Real’\n",
"instance Integral Int -- Defined in ‘GHC.Real’\n",
- "instance forall (k :: BOX) (s :: k) a. Integral a => Integral (Tagged s a) -- Defined in ‘Data.Tagged’\n",
""
],
"text/plain": [
@@ -639,11 +674,11 @@
" quotRem :: a -> a -> (a, a)\n",
" divMod :: a -> a -> (a, a)\n",
" toInteger :: a -> Integer\n",
+ " {-# MINIMAL quotRem, toInteger #-}\n",
" \t-- Defined in ‘GHC.Real’\n",
"instance Integral Word -- Defined in ‘GHC.Real’\n",
"instance Integral Integer -- Defined in ‘GHC.Real’\n",
- "instance Integral Int -- Defined in ‘GHC.Real’\n",
- "instance forall (k :: BOX) (s :: k) a. Integral a => Integral (Tagged s a) -- Defined in ‘Data.Tagged’"
+ "instance Integral Int -- Defined in ‘GHC.Real’"
]
},
"metadata": {},
@@ -657,7 +692,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"We can now write slightly more complicated scripts."
@@ -667,7 +703,9 @@
"cell_type": "code",
"execution_count": 13,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -697,7 +735,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"This is where the similarities with GHCi end, and the particularly shiny features of IHaskell begin.\n",
@@ -709,7 +748,9 @@
"cell_type": "code",
"execution_count": 14,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -719,7 +760,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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",
@@ -731,7 +773,9 @@
"cell_type": "code",
"execution_count": 15,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -751,7 +795,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"Once we define a custom `display :: a -> IO Display` function, we can simply output a `Color`:"
@@ -761,7 +806,9 @@
"cell_type": "code",
"execution_count": 16,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1044,7 +1091,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"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",
@@ -1057,7 +1105,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"The `ihaskell-aeson` package adds a display for [Aeson](http://hackage.haskell.org/package/aeson) JSON `Value` types. These are automatically formatted as JSON, rather than as Haskell values:"
@@ -1067,7 +1116,9 @@
"cell_type": "code",
"execution_count": 17,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1119,7 +1170,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"The `ihaskell-blaze` package lets you play around with HTML straight from within IHaskell using the [Blaze](http://jaspervdj.be/blaze/tutorial.html) library."
@@ -1129,7 +1181,9 @@
"cell_type": "code",
"execution_count": 18,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1360,7 +1414,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"The `ihaskell-diagrams` package allows you to experiment with the [diagrams](http://projects.haskell.org/diagrams/) package. It requires the Cairo backend."
@@ -1370,7 +1425,9 @@
"cell_type": "code",
"execution_count": 19,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1405,7 +1462,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"Just like with Diagrams, `ihaskell-charts` allows you to use the [Chart](https://github.com/timbod7/haskell-chart/wiki) library for plotting from within IHaskell. (You will need to install `cairo` as well, which may be a bit of a hassle.)"
@@ -1415,12 +1473,14 @@
"cell_type": "code",
"execution_count": 20,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
"data": {
- "image/png": "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"
+ "image/png": "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"
},
"metadata": {},
"output_type": "display_data"
@@ -1455,7 +1515,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"In addition to displaying outputs in a rich format, IHaskell has a bunch of useful features.\n",
@@ -1467,7 +1528,9 @@
"cell_type": "code",
"execution_count": 21,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1606,7 +1669,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"If you're an experienced Haskeller, though, and don't want `hlint` telling you what to do, you can easily turn it off:"
@@ -1616,7 +1680,9 @@
"cell_type": "code",
"execution_count": 22,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -1629,7 +1695,9 @@
"cell_type": "code",
"execution_count": 23,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1650,7 +1718,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"In addition to `hlint` integration, IHaskell also integrates **Hoogle** for documentation searches. IHaskell provides two directives for searching Hoogle. The first of these, `:document` (or shorthands), looks for exact matches."
@@ -1660,7 +1729,9 @@
"cell_type": "code",
"execution_count": 24,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -1773,7 +1844,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"The other provided command is `:hoogle`. This does a normal Hoogle search, and thus lets you use imperfect matching and searching by type signature. This will show you documentation for things that match the desired type signature, as demonstrated below. It automatically formats inline Haskell code and hyperlinks the identifiers to their respective Haddock documentations."
@@ -1783,7 +1855,9 @@
"cell_type": "code",
"execution_count": 25,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -2163,7 +2237,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"If you need a refresher on all of the options, you can just use `:help`:"
@@ -2173,7 +2248,9 @@
"cell_type": "code",
"execution_count": 26,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -2212,7 +2289,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"All of the code you normally put into IHaskell is (like in GHCi) interpreted. However, sometimes you've perfected a function, and now need it to run faster. In that case, you can go ahead and define a module in a single cell. As long as your module has a module header along the lines of `module Name where`, IHaskell will recognize it as a module. It will create the file `A/B.hs`, compile it, and load it. "
@@ -2222,7 +2300,9 @@
"cell_type": "code",
"execution_count": 27,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [],
"source": [
@@ -2237,7 +2317,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"Note that the module is by default imported unqualified, as though you had typed `import A.B`."
@@ -2247,7 +2328,9 @@
"cell_type": "code",
"execution_count": 28,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -2278,7 +2361,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"Note that since a new module is imported, all previous bound identifiers are now unbound. For instance, we no longer have access to the `f` function from before:"
@@ -2288,7 +2372,9 @@
"cell_type": "code",
"execution_count": 29,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -2375,10 +2461,10 @@
".suggestion-name {\n",
"font-weight: bold;\n",
"}\n",
- "Not in scope: ‘f’"
+ "<interactive>:1:1: error: Variable not in scope: f :: Integer -> t"
],
"text/plain": [
- "Not in scope: ‘f’"
+ ":1:1: error: Variable not in scope: f :: Integer -> t"
]
},
"metadata": {},
@@ -2392,7 +2478,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"However, if you re-import this module with another import statement, the original implicit import goes away."
@@ -2402,7 +2489,9 @@
"cell_type": "code",
"execution_count": 30,
"metadata": {
- "collapsed": false
+ "collapsed": false,
+ "deletable": true,
+ "editable": true
},
"outputs": [
{
@@ -2434,7 +2523,8 @@
{
"cell_type": "markdown",
"metadata": {
- "hidden": false
+ "deletable": true,
+ "editable": true
},
"source": [
"Thanks!\n",
@@ -2449,6 +2539,7 @@
}
],
"metadata": {
+ "hide_input": false,
"kernelspec": {
"display_name": "Haskell",
"language": "haskell",
@@ -2458,7 +2549,24 @@
"codemirror_mode": "ihaskell",
"file_extension": ".hs",
"name": "haskell",
- "version": "7.10.3"
+ "version": "8.0.2"
+ },
+ "latex_envs": {
+ "bibliofile": "biblio.bib",
+ "cite_by": "apalike",
+ "current_citInitial": 1,
+ "eqLabelWithNumbers": true,
+ "eqNumInitial": 0
+ },
+ "nav_menu": {},
+ "toc": {
+ "navigate_menu": true,
+ "number_sections": true,
+ "sideBar": true,
+ "threshold": 6,
+ "toc_cell": false,
+ "toc_section_display": "block",
+ "toc_window_display": false
}
},
"nbformat": 4,