disco
disco copied to clipboard
Functional teaching language for use in a discrete mathematics course
There should be a way to create .disco files with documentation and markup that can be automatically rendered to Markdown and/or LaTeX.
The current tutorial is written with the goal of describing the language as quickly as possible to contributors who are already familiar with functional programming. It is not at all...
For example (this is using the yet-unmerged `prop` branch): ``` Disco> holds (exists a:N,b:N,c:N. (0 < a < b < c) and (a^2 + b^2 == c^2)) true Disco> :test...
When an unbound identifier is encountered, see if it is close to any existing identifiers. Can we use http://hackage.haskell.org/package/edit-distance for this? How fast is it to simply compute the edit...
Associative, commutative, idempotent, identity etc. These can be referenced in properties, and then in order to typecheck applications of `reduce` we can look for them somehow?
* Add a variant of `freshTy` etc. that takes a suggested name * Even if a type variable ends up being e.g. `a13`, when pretty-printing types try to get rid...
Right now we have a `choose` operator which works on natural numbers, e.g. ``` Disco> 5 choose 2 10 ``` However, what this is really doing is counting the elements...
The order of elements in the second argument to a multinomial coefficient does not matter, e.g. `10 choose [3,4,3] == 10 choose [4,3,3] == 10 choose [3,3,4]`. Would it be...
We should write a typechecker for `DTerm`s. This will be very straightforward since `DTerm`s are supposed to be completely annotated with types, so the typechecker simply goes through and makes...
It would be nice to write a pygments syntax highlighter for disco, so we can have nice syntax highlighting for code examples in the documentation.