Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
The Dao System, a Haskell package providing an interpreted AWK-like scripting language, knowledge base, designed for understanding natural language and artificial intelligence.
branch: master

Created a new module for a new data type 'Dao.Certainty.Certainty'

which contains a running average value that can be easily evaluated by
a sigmoidal function to produce a fuzzy "certainty" value between 0.0
and 1.0. This data type is intended to be useful for building data
structures resembling Artificial Neural Networks.
latest commit dc6d1d3d5a
Ramin Honary authored
Failed to load latest commit information.
src Created a new module for a new data type 'Dao.Certainty.Certainty'
tests Added the tests for "Dao.Interval" and "Dao.Grammar" that I had writt…
.ghci GHCi was not able to interpret my code correctly because the necessary
.gitignore Gave most of the source files a quick make-over with HLint.
Dao.cabal Created a new module for a new data type 'Dao.Certainty.Certainty'
LICENSE first commit
NOTES Corrected hyphenation in project description. Improved on the file.
Setup.hs first commit
grep Minor bug fixes: the 'Dao.Interpreter.makeActionsForQuery' function was

The Dao Programming Language

Copyright (C) 2008-2015, Ramin Honary, all rights reserved.

A pure Haskell dynamically typed EDSL for production-rule-based logic programming and AI.

Dao is a Haskell package providing an Embedded Domain Specific Language (EDSL) designed for constructing simple knowledge bases, artificial intelligence programs, and programs for understanding natural language.

Dao is licensed under the GNU Affero General Public License:

Dao is in some ways reminiscent of the PROLOG programming language, but made better with Haskell's static type checking and clean semantics. Dao is well suited for things like type checking, computing build dependencies, whole-program analysis, rapid prototyping of parsers, and Read-Eval-Print Loop-based (REPL-based) source code development, as well as natural language comprehension.

Dao originally defined a JavaScript-like programming language for defining production rule databases suited to natural language understanding, but now it is just a DSL with tools for defining grammars and parsers, where all production rules are defined in a Haskell program using the Dao APIs. I may bring back "Dao-script" if I see a need for it in the future, or if there is any demand for it.

The more long-term goal of Dao is to create a laboratory with a rich set of tools for experimenting with artificial intelligence, especially for understanding natural human language. The Dao system aspires to become the testing ground for a new wave of effective, practical, natural language user interfaces.

Tutorials and Demos

For a tutorial on how to use Dao, please refer to the "Dao-examples" package on Git Hub.

This package which contains many well-documented examples making use of the Dao EDSL, demonstrates how to solve problems with a knowledge base, and for developing rudimentary artificial intelligence.


The Dao System is the result of my masters thesis, "Natural Language Understanding Systems using the Dao Programming Environment" published at the Tokyo Institute of Technology in 2007. The first public release of the Dao System was made available at in March of 2008, although it was mostly incomplete. The latest code is now available at . Releases will be made available at Hackage as further progress is made.

Something went wrong with that request. Please try again.