Introduction
Objectives
Practice coding in a strongly functional style and writing about it.
Why pursue "lawful" "scientific computing"? (or "artificial intelligence"?)
- For all the same reasons that other software benefits
- Help us communicate with and leverage other fields
- Rich mathematics may be central to future learning algorithms
On the first point: A policy of "no Doubles" is an easy but profoundly disorienting path to "Theorems for Free"
There is a huge gulf between automated theorem provers (Coq, Lean, Agda) and the
kinds of environments and languages used by professional software engineers.
By adopting a stye that eschews even familiar types like Double
in the core code
(although Double
is common in the surface-level examples in this document),
Axle intends to occupy a useful mid-point that can help build a bridge.
Gallery
Installation
Axle as a dependency of an SBT project.
Install SBT
See SBT
Create SBT Project from Giter8 Template
sbt new axlelang/axle.g8
(Less commonly used axle-laws
, axle-awt
, and axle-parallel
are not included in seed project.)
In addition to the axle-lang.org jars are several other third party jars.
Axle is compiled with these jars in provided
scope,
meaning that they are compiled and packaged with the expectation that the user of the Axle
jars will explicitly provide those dependencies.
Next Steps
Run sbt console
to launch the Scala REPL with the Axle jars in the classpath.
Axle works well interactively -- especially during prototyping, debugging, and testing.
Any of the Axle tutorials can be copied and pasted into the REPL.
To start writing code, check out src/main/scala/example/Hello.scala
,
and go from there.
Releases
0.6.6 is the most recent released version:
See the Road Map for more information on the release schedule.
Snapshots
Snapshot versions are created for every commit and hosted on the Sonatype snapshot repo.
Community Resources
- Chat on the gitter channel:
- @axledsl Twitter handle