Magic Word
An experimental programming
system that
combines modern research in programming languages and artificial
intelligence. Typed, purely functional concatenative code for
scripting the web β and others! With deep learning!
Contents
About
Magic Word is a collection of compilers and services written in F# and targeting the web platform. The common theme is ABC, a purely functional bytecode designed for livecoding and program synthesis.
Getting Started
dotnet build
at the top-level will build all projects. At the moment
Magic Word is vaporware, but some time real soon, dotnet run --project ./src/MagicWord.Wiki
will start the wiki, which will walk
you through further configuration and usage.
magic-word.sln
is a .NET solution containing a number of projects:
MagicWord.Functions
MagicWord.Functions
provides evaluators for the purely functional
bytecode, known as ABC, that powers the Magic Word project. Its unique
feature is its rewriting semantics, that allows programs to be
paused, migrated, and resumed at arbitrary points during execution.
MagicWord.Bots
The Magic Word project takes the view that programming language theory
should embrace techniques based on statistics as well as
logic. MagicWord.Bots
implements neural language models trained on
selected corpuses of ABC code. These models are used for program
synthesis, taking inspiration from several recent developments in
machine learning, such as Language Models are Unsupervised Multitask
Learners
and Neural Program Synthesis with Priority Queue
Training.
MagicWord.Wiki
MagicWord.Wiki
implements a web server that allows collaborative
community development of ABC programs.
MagicWord.Media
MagicWord.Media
implements conversions between ABC and various
multimedia formats: audio, images, video and so on. A typical example
is a function from infinite, continuous two dimensional space to some
color space being interpreted as an image (e.g. R^2 -> R^4
).
Documentation
Documentation created with mdBook is available on GitHub Pages.
License
Magic Word is available under the terms of the GNU Affero General
Public License, version 3; see the LICENSE
file for details.