Commits

Anonymous committed 5fbe1cd

Initial import

  • Participants

Comments (0)

Files changed (9)

+syntax: glob
+*.swp
+_build
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+BUILDDIR      = _build
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  dirhtml   to make HTML files named index.html in directories"
+	@echo "  pickle    to make pickle files"
+	@echo "  json      to make JSON files"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  qthelp    to make HTML files and a qthelp project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview of all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+	-rm -rf $(BUILDDIR)/*
+
+html:
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+	@echo
+	@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+pickle:
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files."
+
+json:
+	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+	@echo
+	@echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+	@echo
+	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
+	      ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+	@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/LearnYouAScalaz.qhcp"
+	@echo "To view the help file:"
+	@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/LearnYouAScalaz.qhc"
+
+latex:
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+	@echo
+	@echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+	@echo "Testing of doctests in the sources finished, look at the " \
+	      "results in $(BUILDDIR)/doctest/output.txt."

_static/default.css

+/**
+ * Sphinx stylesheet -- default theme
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ */
+
+@import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+    font-family: sans-serif;
+    font-size: 100%;
+    background-color: #11303d;
+    color: #000;
+    margin: 0;
+    padding: 0;
+}
+
+div.document {
+    background-color: #1c4e63;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: #ffffff;
+    color: #000000;
+    padding: 0 20px 30px 20px;
+}
+
+div.footer {
+    color: #ffffff;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ffffff;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #133f52;
+    line-height: 30px;
+    color: #ffffff;
+}
+
+div.related a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar {
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.4em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+}
+
+div.sphinxsidebar h3 a {
+    color: #ffffff;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Trebuchet MS', sans-serif;
+    color: #ffffff;
+    font-size: 1.3em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+}
+
+div.sphinxsidebar p {
+    color: #ffffff;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    color: #ffffff;
+}
+
+div.sphinxsidebar a {
+    color: #98dbcc;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #98dbcc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+a {
+    color: #355f7c;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Trebuchet MS', sans-serif;
+    background-color: #f2f2f2;
+    font-weight: normal;
+    color: #20435c;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 140%; }
+div.body h4 { font-size: 120%; }
+div.body h5 { font-size: 110%; }
+div.body h6 { font-size: 100%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.admonition p {
+    margin-bottom: 5px;
+}
+
+div.admonition pre {
+    margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+    margin-bottom: 5px;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.topic {
+    background-color: #eee;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+p.admonition-title {
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+pre {
+    padding: 5px;
+    /* background-color: #eeffcc; */
+    background-color: #000000;
+    color: #333333;
+    line-height: 120%;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+.warning tt {
+    background: #efc2c2;
+}
+
+.note tt {
+    background: #d6d6d6;
+}
+# -*- coding: utf-8 -*-
+#
+# Scalaz guide build configuration file, created by
+# sphinx-quickstart on Mon Nov 22 03:35:27 2010.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.todo']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'The Scalaz Guide'
+copyright = u'2010, Dhananjay Nene'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '0.1'
+# The full version, including alpha/beta/rc tags.
+release = '0.1'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+#pygments_style = 'sphinx'
+pygments_style = 'monokai'
+#pygments_style = 'manni'
+#pygments_style = 'perldoc'
+#pygments_style = 'borland'
+#pygments_style = 'colorful'
+#pygments_style = 'default'
+#pygments_style = 'murphy'
+#pygments_style = 'vs'
+#pygments_style = 'trac'
+#pygments_style = 'tango'
+#pygments_style = 'fruity'
+#pygments_style = 'autumn'
+#pygments_style = 'bw'
+#pygments_style = 'emacs'
+#pygments_style = 'pastie'
+#pygments_style = 'friendly'
+#pygments_style = 'native'"
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'ScalazGuide'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'ScalazGuide.tex', u'Scalaz Guide',
+   u'Dhananjay Nene', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
+
+# Custom directives. Added by dhananjay
+todo_include_todos = True
+.. Scalaz Guide master file, created by
+   sphinx-quickstart on Mon Nov 22 03:35:27 2010.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Scalaz Guide
+============
+
+Contents:
+
+.. attention::
+  This is documentation being composed as I study scala and scalaz. Therefore a number of errors and omissions are likely. Hence it is at version 0.1. Your comments and suggestions are welcome and gratefully received. You can send them to dhananjay dot nene at gmail dot com.
+
+.. toctree::
+   :maxdepth: 2
+
+   intro
+   initial
+   ref-identity
+   unicode-mappings
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`search`
+
+An initial overview of `scalaz` capabilities
+============================================
+
+We shall remain in the scala console mode (where we left off in the last chapter). If not in a console, get back to the scala console using `sbt` as suggested in the earlier chapter. 
+
+Much of the basic `scalaz` functionalities can be obtained by importing scalaz._ and Scalaz._ However, when running the console from within `sbt`, these are automatically imported. So the following is not required ::
+
+  scala> import scalaz._
+  import scalaz._
+
+  scala> import Scalaz._
+  import Scalaz._
+
+  scala> 
+
+At this stage the basic `scalaz` constructs are now available to the interpreter.
+
+A pure is a simple trait which can take a value and constructs an applicative functor. 
+
+.. code-block:: scala
+
+  scala> 1.pure[Tuple1]
+  res0: (Int,) = (1)
+
+  scala> 1.pure[List]
+  res1: List[Int] = List(1)
+
+
+
+Introduction
+============
+
+This is an introduction to `Scalaz` (pronounced "*scala-zed*"). Quoting the scalaz documentation:
+
+  *Scalaz is a library written in the Scala Programming Language. The intention of Scalaz is to include general functions that are not currently available in the core Scala API. The scalaz-core module depends only on the core Scala API and the core Java 2 Standard Edition API.*
+
+I think one of the parts the introduction above misses out on is that Scalaz is substantially influenced by Haskell types and attempts to carryover some of its features into scala. It goes without saying that `scalaz` is very strongly influenced towards functional programming constructs.
+
+.. note:: At the point in time this tutorial has been written `scalaz` current version is 0.5.0
+
+Getting Started
+===============
+
+The `scalaz` site is located at http://code.google.com/p/scalaz/. The source code repository is available at http://github.com/scalaz/scalaz.
+
+
+Getting the source
+------------------
+
+Make sure you have `git <http://git-scm.com/>`_ installed. If not you shall need to do download and install the same. Most linux versions should have the same available for install through the distribution's packaging system such as *apt* or *yum*. Alternative download and install the same as per instructions on the website.
+
+Now check out `scalaz` using the following command::
+
+  user:/home/user$ git clone https://github.com/scalaz/scalaz.git
+
+You will also need `sbt: the simple build tool for scala. <http://code.google.com/p/simple-build-tool/>`_ the scala build tool to be installed.
+
+Change your working directory (or `cd` into) the directory where you cloned or retrieved the scalaz code from github. (The directory will be called scalaz) ::
+
+  user:/home/user$ cd scalaz
+
+Compiling, building and launching the console for sbt.
+------------------------------------------------------
+
+Also now run sbt to build the same ::
+
+  user:/home/user$ sbt
+
+`sbt` will compile/build `scalaz` and revert control to you in a prompt mode. (sample session shown below) ::
+
+  > help
+  You may execute any project action or one of the commands described below. Only one action may be executed at a time in interactive mode and is entered by name, as it would be at the command line. Also, tab completion is available.
+  Available Commands:
+    <action name> : Executes the project specified action.
+    <method name> <parameter>* : Executes the project specified method.
+    <processor label> <arguments> : Runs the specified processor.
+    ~ <command> : Executes the project specified action or method whenever source files change.
+    < file : Executes the commands in the given file.  Each command should be on its own line.  Empty lines and lines beginning with '#' are ignored
+    + <command> : Executes the project specified action or method for all versions of Scala defined in crossScalaVersions.
+    ++<version> <command> : Changes the version of Scala building the project and executes the provided command.  <command> is optional.
+    * : Prefix for commands for managing processors.  Run '*help' for details.
+    ! : Prefix for history commands.  Run '!' for history command help.
+    actions : Shows all available actions.
+    reload : Reloads sbt, picking up modifications to sbt.version or scala.version and recompiling modified project definitions.
+    help : Displays this help message.
+    current : Shows the current project, Scala version, and logging level.
+    debug, info, warn, error : Set logging for the current project to the specified level.
+    trace 'on', 'nosbt', 'off', or <integer> : Configures stack trace logging. 'nosbt' prints stack traces up to the first sbt frame.  An integer gives the number of frames to show per exception.
+    project <project name> : Sets the currently active project.
+    projects : Shows all available projects.
+    exit, quit : Terminates the build.
+    set <property> <value> : Sets the value of the property given as its argument.
+    get <property> : Gets the value of the property given as its argument.
+    console-project : Enters the Scala interpreter with the current project definition bound to the variable 'current' and all members imported.
+    builder : Set the current project to be the project definition builder.
+  > 
+
+Change project to `scalaz`::
+
+  > project scalaz-core
+  Set current project to scalaz-core 5.1-SNAPSHOT
+
+Start console::
+
+  > console
+  [info] 
+  [info] == clean src_managed ==
+  [info] Deleting directory /home/user/scalaz/core/src_managed/main/scala
+  [info] == clean src_managed ==
+  [info] 
+  [info] == generate-tuple-w ==
+  [info] == generate-tuple-w ==
+  [info] 
+  [info] == compile ==
+  [info]   Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
+  [info] Compiling main sources...
+  [info] Nothing to compile.
+  [info]   Post-analysis: 3361 classes.
+  [info] == compile ==
+  [info] 
+  [info] == copy-test-resources ==
+  [info] == copy-test-resources ==
+  [info] 
+  [info] == test-compile ==
+  [info]   Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed.
+  [info] Compiling test sources...
+  [info] Nothing to compile.
+  [info]   Post-analysis: 0 classes.
+  [info] == test-compile ==
+  [info] 
+  [info] == copy-resources ==
+  [info] == copy-resources ==
+  [info] 
+  [info] == console ==
+  [info] Starting scala interpreter...
+  [info] 
+  import scalaz._
+  import Scalaz._
+  Welcome to Scala version 2.8.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
+  Type in expressions to have them evaluated.
+  Type :help for more information.
+
+  scala> 
+
+If you reach here, you've successfuly downloaded and built `scalaz` and now can use the same through the scala interpreter just launched. To exit the interpreter, just type *:quit* at the prompt.
+
+Reference
+=========
+
+`Identity` trait
+--------------------
+
+
+Some of the operations that `Identity` helps support are
+
+*The headers indicate the unicode symbol if any, followed by the ascii equivalent separated by a colon*
+
+η : pure
+########
+
+Wraps a value with an applicative functor. eg. 
+
+.. todo:: hyperlink when available
+
+Related : Pure
+
+.. code-block:: scala
+
+  scala> 1.pure[Tuple1]
+  res0: (Int,) = (1)
+
+  scala> 1.pure[List]
+  res1: List[Int] = List(1)
+
+⊹ : \|+|
+########
+
+This is the `mappend` operator 
+
+.. todo:: hyperlink when available
+
+Related : Semigroup
+
+.. code-block:: scala
+
+  scala> "abc" |+| "def"
+  res0: java.lang.String = abcdef
+
+  scala> List(1,2,3) |+| List(4,5,6)
+  res1: List[Int] = List(1, 2, 3, 4, 5, 6)
+
+σ : dual
+########
+
+Returns the dual of the value. Given a type A that has an instance of the Semigroup type class, the type Dual[A] has a Semigroup instance that reverses the arguments to Semigroup.append. In other words it is the dual of a monoid as obtained by swapping the arguments of `mappend`. 
+
+.. todo:: hyperlink when available
+
+Related : Dual
+
+.. code-block:: scala
+
+  scala> List(1,2,3).dual |+| List(4,5,6).dual
+  res0: scalaz.Dual[List[Int]] = List(4, 5, 6, 1, 2, 3)
+
+  scala> "abc".dual |+| "def".dual
+  res1: scalaz.Dual[java.lang.String] = defabc
+
+≟ : ===
+#######
+
+Equality check between the two identities
+
+.. todo:: hyperlink when available
+
+Related : Equal
+
+.. code-block:: scala
+
+  scala> "abc" ≟ "abc" 
+  res0: Boolean = true
+
+  scala> List[Int](1,2,3) ≟ (List[Int](1,2) ⊹  List[Int](3))
+  res1: Boolean = true
+
+  scala> List[Int](1,2,3) ≟ List[Int](1,2,4)                 
+  res2: Boolean = false
+
+
+≠ : /==
+#######
+
+Not equal operator
+
+.. todo:: hyperlink when available
+
+Related : Equal
+
+??
+####
+
+Null check. Returns the value if non null, else returns a specified default.
+
+.. todo:: hyperlink when available
+
+Related : Option
+
+.. code-block:: scala
+
+  scala> (null: String) ?? "default"
+  res0: String = default
+
+  scala> "abc" ?? "default"
+  res1: java.lang.String = abc
+
+?|?
+####
+
+Ordering operator. 
+
+.. todo:: hyperlink when available
+
+Related : Order
+
+.. code-block:: scala
+
+  scala> 9 ?|? 8
+  res0: scalaz.Ordering = GT
+
+  scala> 9 ?|? 9
+  res1: scalaz.Ordering = EQ
+
+  scala> 9 ?|? 10
+  res2: scalaz.Ordering = LT
+
+≤, ≥, ≨, ≩, ≮, ≯, ≰, ≱, lte, gte, lt, gt
+########################################
+
+Various comparison operators
+
+.. todo:: hyperlink when available
+
+Related : Order
+
+min, max
+########
+
+min and max
+
+.. todo:: hyperlink when available
+
+Related : Order
+
+.. code-block:: scala
+
+  scala> 9 min 5
+  res0: Int = 5
+
+  scala> 5 min 9
+  res1: Int = 5
+
+  scala> 7 max 12
+  res2: Int = 12
+
+show, shows
+###########
+
+`show` converts the value to a sequence of characters with interspersed spaces
+
+`shows` converts the value into a printable string
+
+An interesting characteristic is that `as.show === as.shows.toList`
+
+.. todo:: hyperlink when available
+
+Related : Show
+
+.. todo:: had to deliberately force quotes & single quotes to work around pygments syntax highlighting issues. There is an important issue coming up. The output of the scala console (the one which starts with res0: etc) is not meeting pygments scala parser expectation - so the code highlighting is getting aborted. For now, I am modifying the output by introducing additional quotes and doublequotes to allow the parser to succeed. In the long term, either the scala console output should not get shown (which sucks!) or I shall need to hack the pygments scala parser to account for scala console output.
+
+.. code-block:: scala
+
+  scala> List(1,2,3).show
+  res0: List[Char] = List('[','1',',','2',',','3',']')
+
+  scala> "abc".show
+  res1: List[Char] = List(a, b, c)
+
+  scala> List(1,2,3).shows
+  res2: String = "[1,2,3]"
+
+  scala> "abc".shows
+  res3: String = abc
+
+print, println
+##############
+
+Output the value converted to a string via shows to a destination specifically the console. The return is a `Unit` since the primary purpose is only the side effects
+
+.. todo:: hyperlink when available
+
+Related : Show
+.. todo:: had to deliberately force quotes & single quotes to work around pygments syntax highlighting issues
+
+.. code-block:: scala
+
+  scala> List(1,2,3).print
+  "[1,2,3]"
+
+mapply
+######
+
+Applies the function `(f: F[A => B])` over contents of a functor over type A `F[A]` to create a new functor of the same higher kind over type B `F[B]`
+
+.. todo:: hyperlink when available
+
+Related : Functor
+
+.. todo:: sample code is a must have here
+

unicode-mappings.rst

+Appendix A : Unicode Mappings
+=============================
+
+`scalaz` supports a number of operators which are unicode characters. It also supports them through their ascii equivalents. The following table lists such operators, their unicode value, their digraphs (often used in keyboard mappings), their ascii equivalents,
+
+=========  =======  =======  ================
+Character  Unicode  Digraph  Ascii equivalent
+=========  =======  =======  ================
+η          951      y*       pure
+σ          963      s*       dual
+⊹          8889     ++ (?)   \|+|
+≟          8799     ?= (?)   ===
+≠          8800     !=       /==
+≤          8804     =<
+=========  =======  =======  ================
+