25 lines
521 B
Go
25 lines
521 B
Go
// Package "saccharine" provides a simple language built on top of λ-calculus,
|
|
// to facilitate productive coding using it.
|
|
package saccharine
|
|
|
|
import (
|
|
"git.maximhutz.com/max/lambda/pkg/codec"
|
|
)
|
|
|
|
type Marshaler struct{}
|
|
|
|
func (m Marshaler) Decode(s string) (Expression, error) {
|
|
tokens, err := scan(s)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return parse(tokens)
|
|
}
|
|
|
|
func (m Marshaler) Encode(e Expression) (string, error) {
|
|
return stringifyExpression(e), nil
|
|
}
|
|
|
|
var _ codec.Marshaler[Expression] = (*Marshaler)(nil)
|