Right [ TokenProlog ( Prolog { prologXmlDeclaration = Nothing , prologInstructions = [] , prologDoctype = Just ( Doctype "html" Nothing ( InternalSubset { _elementTypes = [] , _attributeLists = [] , _generalEntities = [] , _parameterEntities = [] , _notations = [] , _instructions = [] } ) ) } ) , TokenTag ( QName { namePrefix = "" , nameLocal = "html" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "lang" } , "en" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "head" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "title" } ) ( fromList [] ) [ TokenTextContent "Idris: A Language for Type-Driven Development" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "meta" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "charset" } , "utf-8" ) ] ) [] , TokenTag ( QName { namePrefix = "" , nameLocal = "link" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/theme/css/main.css" ) , ( QName { namePrefix = "" , nameLocal = "rel" } , "stylesheet" ) , ( QName { namePrefix = "" , nameLocal = "type" } , "text/css" ) ] ) [] , TokenTag ( QName { namePrefix = "" , nameLocal = "link" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/" ) , ( QName { namePrefix = "" , nameLocal = "rel" } , "alternate" ) , ( QName { namePrefix = "" , nameLocal = "title" } , "Idris ATOM Feed" ) , ( QName { namePrefix = "" , nameLocal = "type" } , "application/atom+xml" ) ] ) [] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "body" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "home" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "index" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "header" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "body" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "banner" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h1" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/index.html" ) ] ) [ TokenTextContent " " ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "nav" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "ul" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/index.html" ) ] ) [ TokenTextContent "Home" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/download.html" ) ] ) [ TokenTextContent "Download" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/example.html" ) ] ) [ TokenTextContent "Example" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/documentation.html" ) ] ) [ TokenTextContent "Documentation" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/category/news.html" ) ] ) [ TokenTextContent "News" ] ] , TokenTextContent " " ] ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "section" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "body" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "content" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h1" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "entry-title" ) ] ) [ TokenTextContent "Idris: A Language for Type-Driven Development" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "Idris is a programming language designed to encourage " , TokenTag ( QName { namePrefix = "" , nameLocal = "em" } ) ( fromList [] ) [ TokenTextContent "Type-Driven Development" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "In type-driven development, types are tools for constructing programs. We treat the type as the " , TokenTag ( QName { namePrefix = "" , nameLocal = "em" } ) ( fromList [] ) [ TokenTextContent "plan" ] , TokenTextContent " for a program, and use the compiler and type checker as our assistant, guiding us to a complete program that satisfies the type. The more expressive the type is that we give up front, the more confidence we can have that the resulting program will be correct." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "In Idris, types are first-class constructs in the langauge. This means types can be passed as arguments to functions, and returned from functions just like any other value, such as numbers, strings, or lists. This is a small but powerful idea, enabling:" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "ul" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "simple" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTextContent "relationships to be expressed between values; for example, that two lists have the same length." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTextContent "assumptions to be made explicit and checked by the compiler. For example, if you assume that a list is non-empty, Idris can ensure this assumption always holds before the program is run." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTextContent "if desired, properties of program behaviour to be formally stated and proven." ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "div" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "section" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "getting-started" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h2" } ) ( fromList [] ) [ TokenTextContent "Getting Started" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "You can see some " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/example.html" ) ] ) [ TokenTextContent "small examples" ] , TokenTextContent ", then take a look at the " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/documentation.html" ) ] ) [ TokenTextContent "documentation" ] , TokenTextContent "." ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "div" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "section" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "community" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h2" } ) ( fromList [] ) [ TokenTextContent "Community" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dl" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "docutils" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "dt" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "strong" } ) ( fromList [] ) [ TokenTextContent "Mailing list" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dd" } ) ( fromList [] ) [ TokenTextContent "Long-form discussion happens on the " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://groups.google.com/forum/#!forum/idris-lang" ) ] ) [ TokenTextContent "mailing list" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dt" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "strong" } ) ( fromList [] ) [ TokenTextContent "IRC" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dd" } ) ( fromList [] ) [ TokenTextContent "There is also an irc channel " , TokenTag ( QName { namePrefix = "" , nameLocal = "tt" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "docutils literal" ) ] ) [ TokenTextContent "#idris" ] , TokenTextContent " on " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "irc://chat.freenode.net/idris" ) ] ) [ TokenTextContent "freenode" ] , TokenTextContent ". Point your irc client to " , TokenTag ( QName { namePrefix = "" , nameLocal = "tt" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "docutils literal" ) ] ) [ TokenTextContent "chat.freenode.net" ] , TokenTextContent " then " , TokenTag ( QName { namePrefix = "" , nameLocal = "tt" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "docutils literal" ) ] ) [ TokenTextContent "/join #idris" ] , TokenTextContent ". Alternatively, there is a " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "http://webchat.freenode.net/" ) ] ) [ TokenTextContent "web interface" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dt" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "strong" } ) ( fromList [] ) [ TokenTextContent "GitHub" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dd" } ) ( fromList [] ) [ TokenTextContent "The Idris source is available from our repository. Tools and code by the wider Idris community are available in a " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://github.com/idris-hackers" ) ] ) [ TokenTextContent "GitHub organisation" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dt" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "strong" } ) ( fromList [] ) [ TokenTextContent "Slack" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "dd" } ) ( fromList [] ) [ TokenTextContent "There is an active " , TokenTag ( QName { namePrefix = "" , nameLocal = "tt" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "docutils literal" ) ] ) [ TokenTextContent "#idris" ] , TokenTextContent " channel on the " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://functionalprogramming.slack.com/" ) ] ) [ TokenTextContent "Functional Programming" ] , TokenTextContent " Slack." ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "All participants in these forums are requested to abide by the " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/pages/community-standards.html" ) ] ) [ TokenTextContent "community standards" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "Idris development is led by " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "http://www.type-driven.org.uk/edwinb/" ) ] ) [ TokenTextContent "Edwin Brady" ] , TokenTextContent " at the " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "http://www.cs.st-andrews.ac.uk" ) ] ) [ TokenTextContent "School of Computer Science, University of St Andrews" ] , TokenTextContent "." ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "Many thanks to Heath Johns for designing the logo." ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "div" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "section" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "support" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h2" } ) ( fromList [] ) [ TokenTextContent "Support" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "Idris has been generously supported by the following " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://epsrc.ukri.org/" ) ] ) [ TokenTextContent "EPSRC" ] , TokenTextContent " grants:" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "ul" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "simple" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=EP/N024222/1" ) ] ) [ TokenTextContent "Type-driven Verification of Communicating Systems" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=EP/T007265/1" ) ] ) [ TokenTextContent "Programming as Conversation: Type-Driven Development in Action" ] ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "We are also grateful for the continuing support of " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "reference external" ) , ( QName { namePrefix = "" , nameLocal = "href" } , "http://www.sicsa.ac.uk/" ) ] ) [ TokenTextContent "SICSA" ] , TokenTextContent ", the Scottish Informatics and Computer Science Alliance" ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "aside" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "id" } , "sidebar" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "div" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "widget" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h2" } ) ( fromList [] ) [ TokenTextContent "Categories" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "ul" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/category/news.html" ) ] ) [ TokenTextContent "News" ] ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "div" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "widget social" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "h2" } ) ( fromList [] ) [ TokenTextContent "Social" ] , TokenTag ( QName { namePrefix = "" , nameLocal = "ul" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.idris-lang.org/feeds/all.atom.xml" ) , ( QName { namePrefix = "" , nameLocal = "rel" } , "alternate" ) ] ) [ TokenTextContent "atom feed" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.twitter.com/idrislang" ) ] ) [ TokenTextContent "@idrislang" ] ] , TokenTag ( QName { namePrefix = "" , nameLocal = "li" } ) ( fromList [] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://www.github.com/idris-lang" ) ] ) [ TokenTextContent "GitHub" ] ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "footer" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "body" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "footer" ) ] ) [ TokenTag ( QName { namePrefix = "" , nameLocal = "address" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "class" } , "vcard body" ) , ( QName { namePrefix = "" , nameLocal = "id" } , "about" ) ] ) [ TokenTextContent " Proudly powered by " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "http://alexis.notmyidea.org/pelican/" ) ] ) [ TokenTextContent "Pelican" ] , TokenTextContent ", which takes great advantage of " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "http://python.org" ) ] ) [ TokenTextContent "Python" ] , TokenTextContent " (not Idris :)). Patches are welcome on " , TokenTag ( QName { namePrefix = "" , nameLocal = "a" } ) ( fromList [ ( QName { namePrefix = "" , nameLocal = "href" } , "https://github.com/edwinb/idris-lang.org/" ) ] ) [ TokenTextContent "github" ] , TokenTextContent "! " ] , TokenTag ( QName { namePrefix = "" , nameLocal = "p" } ) ( fromList [] ) [ TokenTextContent "The theme is «notmyidea-cms», a modified version of «notmyidea», the default theme." ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTextContent " " ] , TokenTextContent " " ]