package minicaml
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
On This Page
  
  
  A simple, didactical, purely functional programming language
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
  
    
      minicaml-0.3.3.tbz
    
    
        
    
  
  
  
    
  
  
    
  
        sha256=eb55f3123aba4d33d16837c9eac0475617be50718706436d1817390b4211bab2
    
    
  sha512=5d6e4003a95e74dc7159074f477d9e4e02525c1c2fdc8654cdce47fb8b16feb19b43f654d5f6fb9fe2a53fe5512281de5c62c1030c09e9025fe41e37e33f3421
    
    
  doc/CHANGES.html
0.3.3 2019-01-08
- Rely on the Ramda.js library for JS transpilation. (Currently broken because of numerical primitives and a lack of a Complex number solution for Javascript).
 - Full numerical tower comprising Integer (Natural) numbers, Floating Point (Real) numbers and Complex numbers, with dynamic number-type infering arithmetical primitives.
 - Switch between pure and impure primitives.
 - Simple I/O primitives for printing.
 - More examples and features descriptions in the README file.
 
0.3.2 2019-01-03
Added
- Reworking of language internals.
 - Fixed build process
 - More primitives and operators.
 - AST optimizations based on propositional calculus laws.
 - Experimental Javascript transpiler! :)
 
0.3.1 2019-12-26
Added
map2primitive- Reading programs from files
 - An abstraction that allows treating primitives as functions, and so allows currying and all the fancy stuff.
 - Examples in the 
examples/directory - Greater or equal to and Less than or equal to operators
 - More test coverage.
 
Bugfixes
- Fixed various bugs of 0.3
 
0.3 2019-12-25
Added
- A simple AST optimizer
 - Multiple let assignments (
let x = 2 and y = 3 and z = ... in ...) - Function currying (partial application)
 - Strings
 - Sequences of expressions separated with 
;are treated as a single expression that returns the value of the last one. - Function pipelining (reverse composition) with the 
>=>operator. ((fun x y -> x + y >=> g) 1 2isg 3) - Dictionaries (
{"hello": 123, "world": 345}) - Map, foldl and filter on lists and dictionaries
 - Testing and code coverage using alcotest and bisect_ppx
 
Bugfixes
- Fixed function application parser
 
0.2.2 2019-12-13
Added
let lazy rec(orlet rec lazy) to define recursive lazy functions- Command line option parser and man page
 - Command line option 
-v(--verbose) to tell the REPL to show the AST and reduction steps. - Evaluation step printing is now done in correct order and nesting.
 
Bugfixes
- Fixed boolean primitives.
 
Removed
lazyfunandlazylambdastatements.
0.2.1 2019-12-12
Added
- Optional 
lazyevaluation! You can uselet lazyto define values that will be evaluated only when encountered in thelet lazyexpression body. - Lazy anonymous functions! Just like the 
let lazystatement you can now uselazyfunorlazylambdato define anonymous functions which arguments will be lazily evaluated. 
Bugfixes
- Fixed precedence levels in parser
 
Roadmap
- Cache for lazy evaluation
 - Partial application
 
0.2 2019-12-08
Added
- Lists
 - Unit
 
0.1 2019-12-03
Added
- Initial release of the project
 
 sectionYPositions = computeSectionYPositions($el), 10)"
  x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
  >
  
  
  On This Page