ale

package module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2025 License: MIT Imports: 0 Imported by: 0

README

Ale is a Lisp Environment

Go Report Card Build Status Code Coverage Maintainability GitHub

Ale is a Lisp Environment for Go applications

How To Install

Make sure your GOPATH is set, then run go install to install the command line tool.

go install github.com/kode4food/ale/cmd/ale@latest

You can also install it from the cloned repository using make.

make install

How To Run A Source File

Once you've installed the package, you can run it from GOPATH/bin like so:

ale somefile.ale

# or

cat somefile.ale | ale

## or

ale <<EOF
(let [ch (chan)]
  (go (: ch :emit "Hello")
      (: ch :emit "Ale!")
      (: ch :close))

  (apply println (ch :seq)))
EOF

How To Start The REPL

Ale has a very crude Read-Eval-Print Loop that will be more than happy to start if you invoke ale with no arguments from your shell.

Current Status

Still a work in progress. Use at your own risk.

Documentation

Overview

Package ale provides a Lisp environment and interpreter implemented in Go. It includes a complete Lisp runtime with bytecode compilation, virtual machine execution, and standard library functions for building embedded Lisp applications.

Index

Constants

View Source
const (
	// AppName is the name of the application
	AppName = "Ale (A Lisp Environment)"

	// Version is the current version
	Version = "0.3"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Type added in v0.3.0

type Type interface {
	// Name identifies this Type
	Name() string

	// Accepts determines if this Type will accept the provided Type for
	// binding. This will generally mean that the provided Type satisfies
	// the contract of the receiver.
	Accepts(Type) bool

	// Equal determines if the provided Type is an equivalent definition
	Equal(Type) bool
}

Type describes the type compatibility for a Value

type Typed added in v0.3.0

type Typed interface {
	Value

	// Type returns the Type for this Value
	Type() Type
}

type Value added in v0.3.0

type Value interface {
	// Equal compares this Value to another for equality
	Equal(Value) bool
}

Value is the generic interface for all data

Directories

Path Synopsis
cmd
ale command
Package main provides the Ale command-line interface and REPL.
Package main provides the Ale command-line interface and REPL.
ale/internal
Package internal provides the REPL implementation
Package internal provides the REPL implementation
ale/internal/console
Package console provides console formatting utilities
Package console provides console formatting utilities
ale/internal/docstring
Package docstring provides documentation access for core library functions
Package docstring provides documentation access for core library functions
ale/internal/markdown
Package markdown provides markdown formatting for the REPL
Package markdown provides markdown formatting for the REPL
core
bootstrap
Package bootstrap performs initial setup of the Ale runtime environment.
Package bootstrap performs initial setup of the Ale runtime environment.
builtin
Package builtin provides core runtime functions implemented in Go that form the foundation of Ale's standard library.
Package builtin provides core runtime functions implemented in Go that form the foundation of Ale's standard library.
source
Package source provides embedded Ale language source files that implement the core standard library.
Package source provides embedded Ale language source files that implement the core standard library.
special
Package special provides Ale's special forms and compiler primitives that emit instructions during compilation.
Package special provides Ale's special forms and compiler primitives that emit instructions during compilation.
Package data provides the fundamental value types and interfaces that form the core of Ale's type system.
Package data provides the fundamental value types and interfaces that form the core of Ale's type system.
internal
Package internal provides utility types for the data package
Package internal provides utility types for the data package
Package env provides namespace and binding management for the Ale runtime.
Package env provides namespace and binding management for the Ale runtime.
Package eval provides the high-level evaluation interface for executing Ale code.
Package eval provides the high-level evaluation interface for executing Ale code.
ffi
Package ffi provides Foreign Function Interface capabilities that enable seamless integration between Ale and Go code.
Package ffi provides Foreign Function Interface capabilities that enable seamless integration between Ale and Go code.
maxkind
Code generated by gen_maxkind.go; DO NOT EDIT.
Code generated by gen_maxkind.go; DO NOT EDIT.
internal
assert
Package assert provides testing utilities
Package assert provides testing utilities
assert/helpers
Package helpers provides test helper functions
Package helpers provides test helper functions
basics
Package basics provides utility functions
Package basics provides utility functions
compiler
Package compiler provides compilation infrastructure
Package compiler provides compilation infrastructure
compiler/asm
Package asm implements the Ale assembler
Package asm implements the Ale assembler
compiler/encoder
Package encoder provides bytecode encoding
Package encoder provides bytecode encoding
compiler/generate
Package generate provides code generation
Package generate provides code generation
compiler/ir/analysis
Package analysis provides IR analysis
Package analysis provides IR analysis
compiler/ir/optimize
Package optimize provides IR optimization
Package optimize provides IR optimization
compiler/ir/visitor
Package visitor provides IR visitor patterns
Package visitor provides IR visitor patterns
compiler/procedure
Package procedure provides procedure compilation
Package procedure provides procedure compilation
debug
Package debug provides debugging utilities
Package debug provides debugging utilities
lang
Package lang provides language definition, lexing, and parsing
Package lang provides language definition, lexing, and parsing
lang/env
Package env provides environment definitions for the language.
Package env provides environment definitions for the language.
lang/lex
Package lex provides the Ale lexer language tokenizer
Package lex provides the Ale lexer language tokenizer
lang/params
Package params provides Ale language parameter parsing
Package params provides Ale language parameter parsing
lang/parse
Package parse provides Ale language parsing functionality
Package parse provides Ale language parsing functionality
runtime
Package runtime provides runtime infrastructure
Package runtime provides runtime infrastructure
runtime/isa
Package isa provides instruction set architecture
Package isa provides instruction set architecture
runtime/vm
Package vm provides virtual machine implementation
Package vm provides virtual machine implementation
sequence
Package sequence provides sequence utilities
Package sequence provides sequence utilities
stream
Package stream provides I/O stream utilities
Package stream provides I/O stream utilities
strings
Package strings provides string utilities
Package strings provides string utilities
sync
Package sync provides synchronization utilities
Package sync provides synchronization utilities
types
Package types provides type system implementation
Package types provides type system implementation
Package macro provides Ale's macro expansion system for compile-time code transformation.
Package macro provides Ale's macro expansion system for compile-time code transformation.
Package read provides the reader interface for parsing Ale source code into abstract syntax trees.
Package read provides the reader interface for parsing Ale source code into abstract syntax trees.
data
Package data provides a specialized reader interface for parsing pure data expressions without code evaluation.
Package data provides a specialized reader interface for parsing pure data expressions without code evaluation.
internal
Package internal provides parsing and tokenization mechanisms
Package internal provides parsing and tokenization mechanisms

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL