gfu

package
v0.0.0-...-f0df266 Latest Latest
Warning

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

Go to latest
Published: Dec 24, 2019 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var TimeFormat = "2006-01-02 15:04:05"

Functions

func NewG

func NewG() (*G, E)

func NewMac

func NewMac(g *G, env *Env, id *Sym, args []Arg) (*Mac, E)

func NewTask

func NewTask(g *G, env *Env, id *Sym, inbox Chan, body Vec) (*Task, E)

func ParseArgs

func ParseArgs(g *G, task *Task, env *Env, in Vec, args_env *Env) (Args, E)

Types

type Abort

type Abort struct{}

func (Abort) Type

func (_ Abort) Type(g *G) Type

type AbortType

type AbortType struct {
	BasicType
}

func (*AbortType) Dump

func (_ *AbortType) Dump(g *G, val Val, out *bufio.Writer) E

type Arg

type Arg struct {
	// contains filtered or unexported fields
}

func A

func A(id string) (a Arg)

func AOpt

func AOpt(id string, val Val) (a Arg)

func ASplat

func ASplat(id string) (a Arg)

func (Arg) Dump

func (a Arg) Dump(g *G, out *bufio.Writer) E

func (Arg) DumpId

func (a Arg) DumpId(out *bufio.Writer)

func (*Arg) Init

func (a *Arg) Init(id *Sym) *Arg

func (Arg) OptVal

func (a Arg) OptVal(g *G) Val

type ArgList

type ArgList struct {
	// contains filtered or unexported fields
}

func (*ArgList) Check

func (l *ArgList) Check(g *G, args Vec) E

func (*ArgList) Fill

func (l *ArgList) Fill(g *G, args Vec) Vec

func (*ArgList) Init

func (l *ArgList) Init(g *G, args Args) *ArgList

func (*ArgList) LetVars

func (l *ArgList) LetVars(g *G, env *Env, args Vec) E

type ArgType

type ArgType int
const (
	ARG_PLAIN ArgType = 0
	ARG_OPT   ArgType = 1
	ARG_SPLAT ArgType = 2
)

type Args

type Args []Arg

func (Args) Dump

func (as Args) Dump(g *G, out *bufio.Writer) E

func (Args) EString

func (as Args) EString(g *G) string

type BasicIterType

type BasicIterType struct {
	BasicType
}

func (*BasicIterType) Iter

func (_ *BasicIterType) Iter(g *G, val Val) (out Val, e E)

type BasicType

type BasicType struct {
	// contains filtered or unexported fields
}

func (*BasicType) ArgList

func (t *BasicType) ArgList(g *G, _ Val) (*ArgList, E)

func (*BasicType) Bool

func (_ *BasicType) Bool(g *G, val Val) (bool, E)

func (*BasicType) Call

func (t *BasicType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (Val, E)

func (*BasicType) Clone

func (_ *BasicType) Clone(g *G, val Val) (Val, E)

func (*BasicType) Drop

func (_ *BasicType) Drop(g *G, val Val, n Int) (out Val, e E)

func (*BasicType) Dump

func (t *BasicType) Dump(g *G, val Val, out *bufio.Writer) E

func (*BasicType) Dup

func (_ *BasicType) Dup(g *G, val Val) (Val, E)

func (*BasicType) EachParent

func (t *BasicType) EachParent(f func(Type))

func (*BasicType) Env

func (t *BasicType) Env() *Env

func (*BasicType) Eq

func (_ *BasicType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*BasicType) Eval

func (_ *BasicType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*BasicType) Expand

func (_ *BasicType) Expand(g *G, task *Task, env *Env, val Val, depth Int) (Val, E)

func (*BasicType) Extenv

func (_ *BasicType) Extenv(g *G, src, dst *Env, val Val, clone bool) E

func (*BasicType) Id

func (t *BasicType) Id() *Sym

func (*BasicType) Index

func (t *BasicType) Index(g *G, val Val, key Vec) (Val, E)

func (*BasicType) Init

func (t *BasicType) Init(g *G, id *Sym, parents []Type) E

func (*BasicType) Is

func (_ *BasicType) Is(g *G, lhs, rhs Val) bool

func (*BasicType) Isa

func (t *BasicType) Isa(parent Type) Type

func (*BasicType) Iter

func (t *BasicType) Iter(g *G, val Val) (Val, E)

func (*BasicType) Len

func (t *BasicType) Len(g *G, val Val) (Int, E)

func (*BasicType) Pop

func (t *BasicType) Pop(g *G, val Val) (Val, Val, E)

func (*BasicType) Print

func (_ *BasicType) Print(g *G, val Val, out *bufio.Writer) E

func (*BasicType) Push

func (t *BasicType) Push(g *G, val Val, its ...Val) (Val, E)

func (*BasicType) Quote

func (_ *BasicType) Quote(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*BasicType) SetIndex

func (t *BasicType) SetIndex(g *G, task *Task, env *Env, val Val, key Vec, set Setter) (Val, Val, E)

func (*BasicType) Splat

func (_ *BasicType) Splat(g *G, val Val, out Vec) (Vec, E)

func (*BasicType) String

func (t *BasicType) String() string

func (*BasicType) Type

func (_ *BasicType) Type(g *G) Type

type BasicWrap

type BasicWrap struct {
	// contains filtered or unexported fields
}

func (*BasicWrap) Init

func (w *BasicWrap) Init(val Val) *BasicWrap

type BasicWrapType

type BasicWrapType struct {
	BasicType
}

func (*BasicWrapType) Bool

func (_ *BasicWrapType) Bool(g *G, val Val) (bool, E)

func (*BasicWrapType) Clone

func (_ *BasicWrapType) Clone(g *G, val Val) (Val, E)

func (*BasicWrapType) Dump

func (_ *BasicWrapType) Dump(g *G, val Val, out *bufio.Writer) E

func (*BasicWrapType) Dup

func (_ *BasicWrapType) Dup(g *G, val Val) (Val, E)

func (*BasicWrapType) Eq

func (_ *BasicWrapType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*BasicWrapType) Extenv

func (_ *BasicWrapType) Extenv(g *G, src, dst *Env, val Val, clone bool) E

type Bin

type Bin []byte

func NewBin

func NewBin(len int) Bin

func (Bin) Type

func (b Bin) Type(g *G) Type

type BinIter

type BinIter struct {
	// contains filtered or unexported fields
}

func (*BinIter) Init

func (i *BinIter) Init(g *G, in Bin) *BinIter

func (*BinIter) Type

func (_ *BinIter) Type(g *G) Type

type BinIterType

type BinIterType struct {
	BasicIterType
}

func (*BinIterType) Bool

func (_ *BinIterType) Bool(g *G, val Val) (bool, E)

func (*BinIterType) Drop

func (_ *BinIterType) Drop(g *G, val Val, n Int) (Val, E)

func (*BinIterType) Dup

func (_ *BinIterType) Dup(g *G, val Val) (Val, E)

func (*BinIterType) Eq

func (_ *BinIterType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*BinIterType) Pop

func (_ *BinIterType) Pop(g *G, val Val) (Val, Val, E)

func (*BinIterType) Splat

func (_ *BinIterType) Splat(g *G, val Val, out Vec) (Vec, E)

type BinType

type BinType struct {
	BasicType
}

func (*BinType) Bool

func (_ *BinType) Bool(g *G, val Val) (bool, E)

func (*BinType) Dump

func (_ *BinType) Dump(g *G, val Val, out *bufio.Writer) E

func (*BinType) Dup

func (_ *BinType) Dup(g *G, val Val) (Val, E)

func (*BinType) Eq

func (_ *BinType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*BinType) Index

func (_ *BinType) Index(g *G, val Val, key Vec) (Val, E)

func (*BinType) Iter

func (_ *BinType) Iter(g *G, val Val) (Val, E)

func (*BinType) Len

func (_ *BinType) Len(g *G, val Val) (Int, E)

func (*BinType) Print

func (_ *BinType) Print(g *G, val Val, out *bufio.Writer) E

func (*BinType) SetIndex

func (_ *BinType) SetIndex(g *G, task *Task, env *Env, val Val, key Vec, set Setter) (Val, Val, E)

type Byte

type Byte byte

func (Byte) Type

func (_ Byte) Type(g *G) Type

type ByteType

type ByteType struct {
	NumType
}

func (*ByteType) Add

func (_ *ByteType) Add(g *G, x Val, y Val) (Val, E)

func (*ByteType) Bool

func (_ *ByteType) Bool(g *G, val Val) (bool, E)

func (*ByteType) Byte

func (_ *ByteType) Byte(g *G, val Val) (Byte, E)

func (*ByteType) Dump

func (_ *ByteType) Dump(g *G, val Val, out *bufio.Writer) E

func (*ByteType) Eq

func (_ *ByteType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*ByteType) Int

func (_ *ByteType) Int(g *G, val Val) (Int, E)

func (*ByteType) Print

func (_ *ByteType) Print(g *G, val Val, out *bufio.Writer) E

func (*ByteType) Sub

func (_ *ByteType) Sub(g *G, x Val, y Val) (Val, E)

type Catch

type Catch struct {
	// contains filtered or unexported fields
}

func (*Catch) Init

func (c *Catch) Init(etype Type, imp *Fun) *Catch

type Chan

type Chan chan Val

func NewChan

func NewChan(buf Int) Chan

func (Chan) Dump

func (c Chan) Dump(out *bufio.Writer)

func (Chan) Len

func (c Chan) Len() Int

func (Chan) Pop

func (c Chan) Pop() Val

func (Chan) Push

func (c Chan) Push(g *G, its ...Val) E

func (Chan) Type

func (_ Chan) Type(g *G) Type

type ChanType

type ChanType struct {
	BasicType
}

func (*ChanType) Bool

func (_ *ChanType) Bool(g *G, val Val) (bool, E)

func (*ChanType) Drop

func (_ *ChanType) Drop(g *G, val Val, n Int) (Val, E)

func (*ChanType) Dump

func (_ *ChanType) Dump(g *G, val Val, out *bufio.Writer) E

func (*ChanType) Len

func (_ *ChanType) Len(g *G, val Val) (Int, E)

func (*ChanType) Pop

func (_ *ChanType) Pop(g *G, val Val) (Val, Val, E)

func (*ChanType) Push

func (_ *ChanType) Push(g *G, val Val, its ...Val) (Val, E)

type Char

type Char rune

func (Char) Type

func (_ Char) Type(g *G) Type

type CharSet

type CharSet string

func (CharSet) Member

func (s CharSet) Member(c rune) bool

type CharType

type CharType struct {
	BasicType
}

func (*CharType) Dump

func (_ *CharType) Dump(g *G, val Val, out *bufio.Writer) E

func (*CharType) Print

func (_ *CharType) Print(g *G, val Val, out *bufio.Writer) E

type E

type E interface {
	Val
}

type EBasic

type EBasic struct {
	// contains filtered or unexported fields
}

func (*EBasic) Dump

func (e *EBasic) Dump(g *G, out *bufio.Writer) E

func (*EBasic) Init

func (e *EBasic) Init(g *G, msg string) *EBasic

func (*EBasic) Msg

func (e *EBasic) Msg(g *G) string

func (*EBasic) Type

func (e *EBasic) Type(g *G) Type

type EImpure

type EImpure struct {
	// contains filtered or unexported fields
}

func (EImpure) Type

func (_ EImpure) Type(g *G) Type

type EImpureType

type EImpureType struct {
	BasicType
}

func (*EImpureType) Dump

func (_ *EImpureType) Dump(g *G, val Val, out *bufio.Writer) E

type ERead

type ERead struct {
	EBasic
	// contains filtered or unexported fields
}

func (*ERead) Init

func (e *ERead) Init(g *G, pos Pos, msg string) *ERead

func (ERead) Type

func (_ ERead) Type(g *G) Type

type EReadType

type EReadType struct {
	BasicType
}

func (EReadType) Dump

func (_ EReadType) Dump(g *G, val Val, out *bufio.Writer) E

type EType

type EType struct {
	BasicType
}

func (*EType) Dump

func (_ *EType) Dump(g *G, val Val, out *bufio.Writer) E

func (*EType) Print

func (_ *EType) Print(g *G, val Val, out *bufio.Writer) E

type EUnknown

type EUnknown struct {
	// contains filtered or unexported fields
}

func (EUnknown) Type

func (_ EUnknown) Type(g *G) Type

type EUnknownType

type EUnknownType struct {
	BasicType
}

func (*EUnknownType) Dump

func (_ *EUnknownType) Dump(g *G, val Val, out *bufio.Writer) E

type Env

type Env struct {
	// contains filtered or unexported fields
}

func (*Env) Add

func (e *Env) Add(key *Sym, val Val) bool

func (*Env) AddConst

func (env *Env) AddConst(g *G, id string, val Val) E

func (*Env) AddFun

func (env *Env) AddFun(g *G, id string, imp FunImp, args ...Arg) (*Fun, E)

func (*Env) AddPrim

func (env *Env) AddPrim(g *G, id string, pure bool, imp PrimImp, args ...Arg) E

func (*Env) AddPun

func (env *Env) AddPun(g *G, id string, imp FunImp, args ...Arg) (*Fun, E)

func (*Env) AddType

func (e *Env) AddType(g *G, t Type, id string, parents ...Type) E

func (*Env) Clear

func (e *Env) Clear()

func (*Env) Clone

func (env *Env) Clone(g *G, dst *Env) (e E)

func (*Env) Dump

func (e *Env) Dump(g *G, out *bufio.Writer) E

func (*Env) Dup

func (e *Env) Dup(dst *Env) *Env

func (*Env) Extend

func (dst *Env) Extend(g *G, src *Env, clone bool, keys ...*Sym) E

func (*Env) Find

func (e *Env) Find(key *Sym) (int, *Var)

func (*Env) Get

func (e *Env) Get(g *G, task *Task, key *Sym, args_env *Env, silent bool) (Val, E)

func (*Env) GetVar

func (e *Env) GetVar(g *G, key *Sym, silent bool) (*Var, int, E)

func (*Env) InitAbc

func (e *Env) InitAbc(g *G)

func (*Env) InitIO

func (e *Env) InitIO(g *G)

func (*Env) InitMath

func (e *Env) InitMath(g *G)

func (*Env) InitTime

func (e *Env) InitTime(g *G)

func (*Env) Insert

func (e *Env) Insert(i int, key *Sym) *Var

func (*Env) InsertVar

func (e *Env) InsertVar(i int, v *Var)

func (*Env) Len

func (e *Env) Len() Int

func (*Env) Let

func (env *Env) Let(g *G, key *Sym, val Val) E

func (*Env) Remove

func (e *Env) Remove(key *Sym) Val

func (*Env) Resolve

func (e *Env) Resolve(g *G, task *Task, key *Sym, args_env *Env, silent bool) (Val, E)

func (*Env) Set

func (env *Env) Set(g *G, task *Task, key Val, val Val, args_env *Env) E

func (*Env) SetPlace

func (env *Env) SetPlace(g *G, task *Task, key Vec, set Setter, args_env *Env) (val Val, e E)

func (*Env) Type

func (e *Env) Type(g *G) Type

func (*Env) Update

func (env *Env) Update(g *G, task *Task, key Val, set Setter, args_env *Env) (Val, E)

func (*Env) Use

func (env *Env) Use(g *G, src *Env, ids ...string) (e E)

type EnvType

type EnvType struct {
	BasicType
}

func (*EnvType) Bool

func (_ *EnvType) Bool(g *G, val Val) (bool, E)

func (*EnvType) Clone

func (_ *EnvType) Clone(g *G, val Val) (Val, E)

func (*EnvType) Dump

func (_ *EnvType) Dump(g *G, val Val, out *bufio.Writer) E

func (*EnvType) Dup

func (_ *EnvType) Dup(g *G, val Val) (Val, E)

func (*EnvType) Len

func (_ *EnvType) Len(g *G, val Val) (Int, E)

type False

type False struct {
}

func (*False) Type

func (_ *False) Type(g *G) Type

type FalseType

type FalseType struct {
	BasicType
}

func (*FalseType) Bool

func (_ *FalseType) Bool(g *G, val Val) (bool, E)

func (*FalseType) Dump

func (_ *FalseType) Dump(g *G, val Val, out *bufio.Writer) E

type Float

type Float big.Float

func (*Float) Abs

func (f *Float) Abs()

func (*Float) Add

func (f *Float) Add(val Float)

func (Float) Cmp

func (f Float) Cmp(val Float) int

func (*Float) Div

func (f *Float) Div(val Float)

func (*Float) Mul

func (f *Float) Mul(val Float)

func (*Float) Neg

func (f *Float) Neg()

func (*Float) Parse

func (f *Float) Parse(g *G, in string) E

func (*Float) SetFloat

func (f *Float) SetFloat(val float64)

func (*Float) SetInt

func (f *Float) SetInt(val Int)

func (Float) Sign

func (f Float) Sign() int

func (Float) String

func (f Float) String() string

func (*Float) Sub

func (f *Float) Sub(val Float)

func (Float) Type

func (_ Float) Type(g *G) Type

type FloatType

type FloatType struct {
	NumType
}

func (*FloatType) Abs

func (t *FloatType) Abs(g *G, x Val) (Val, E)

func (*FloatType) Add

func (t *FloatType) Add(g *G, x, y Val) (Val, E)

func (*FloatType) Bool

func (_ *FloatType) Bool(g *G, val Val) (bool, E)

func (*FloatType) Div

func (t *FloatType) Div(g *G, x, y Val) (Val, E)

func (*FloatType) Dump

func (_ *FloatType) Dump(g *G, val Val, out *bufio.Writer) E

func (*FloatType) Float

func (_ *FloatType) Float(g *G, val Val) (Float, E)

func (*FloatType) Is

func (t *FloatType) Is(g *G, x, y Val) bool

func (*FloatType) Mul

func (t *FloatType) Mul(g *G, x, y Val) (Val, E)

func (*FloatType) Neg

func (t *FloatType) Neg(g *G, x Val) (Val, E)

func (*FloatType) Sub

func (t *FloatType) Sub(g *G, x, y Val) (Val, E)

type Fun

type Fun struct {
	// contains filtered or unexported fields
}

func NewFun

func NewFun(g *G, env *Env, id *Sym, args ...Arg) *Fun

func (*Fun) CallArgs

func (f *Fun) CallArgs(g *G, task *Task, env *Env, args Vec, args_env *Env) (Val, E)

func (*Fun) CheckArgs

func (f *Fun) CheckArgs(g *G, args Vec) (Vec, E)

func (*Fun) Init

func (f *Fun) Init(g *G, env *Env, id *Sym, args []Arg) *Fun

func (*Fun) InitEnv

func (f *Fun) InitEnv(g *G, env *Env) E

func (*Fun) Type

func (f *Fun) Type(g *G) Type

type FunImp

type FunImp func(*G, *Task, *Env, Vec) (Val, E)

type FunType

type FunType struct {
	BasicType
}

func (*FunType) ArgList

func (_ *FunType) ArgList(g *G, val Val) (*ArgList, E)

func (*FunType) Call

func (_ *FunType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (Val, E)

func (*FunType) Dump

func (_ *FunType) Dump(g *G, val Val, out *bufio.Writer) E

type G

type G struct {
	Debug    bool
	MainTask Task
	RootEnv  Env

	AbortType   AbortType
	BinType     BinType
	BinIterType BinIterType
	ByteType    ByteType
	ChanType    ChanType
	CharType    CharType
	EType       EType
	EnvType     EnvType
	FalseType   FalseType
	FloatType   FloatType
	FunType     FunType
	IntType     IntType
	IntIterType IntIterType
	IterType    IterType
	MacType     MacType
	MetaType    MetaType
	NilType     NilType
	NanosType   NanosType
	NumType     NumType
	PrimType    PrimType
	PunType     PunType
	QuoteType   QuoteType
	RecallType  RecallType
	RestartType RestartType
	RetryType   RetryType
	SetterType  SetterType
	SeqType     SeqType
	SplatType   SplatType
	SpliceType  SpliceType
	StrType     StrType
	SymType     SymType
	TaskType    TaskType
	TimeType    TimeType
	TrueType    TrueType
	VecType     VecType
	VecIterType VecIterType
	WriterType  WriterType

	EImpureType  EImpureType
	EReadType    EReadType
	EUnknownType EUnknownType

	NIL Nil
	T   True
	F   False
	// contains filtered or unexported fields
}

func (*G) Abs

func (g *G) Abs(x Val) (Val, E)

func (*G) Add

func (g *G) Add(x, y Val) (Val, E)

func (*G) ArgList

func (g *G) ArgList(val Val) (*ArgList, E)

func (*G) Bool

func (g *G) Bool(val Val) (bool, E)

func (*G) BoolVal

func (g *G) BoolVal(val Val) (Val, E)

func (*G) BreakLoop

func (g *G) BreakLoop(task *Task, env *Env, cause E, args_env *Env) (Val, E)

func (*G) Byte

func (g *G) Byte(val Val) (Byte, E)

func (*G) Call

func (g *G) Call(task *Task, env *Env, val Val, args Vec, args_env *Env) (Val, E)

func (*G) Catch

func (g *G) Catch(task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*G) Clone

func (g *G) Clone(val Val) (Val, E)

func (*G) Div

func (g *G) Div(x, y Val) (Val, E)

func (*G) Drop

func (g *G) Drop(val Val, n Int) (out Val, e E)

func (*G) Dump

func (g *G) Dump(val Val, out *bufio.Writer) E

func (*G) Dup

func (g *G) Dup(val Val) (Val, E)

func (*G) E

func (g *G) E(msg string, args ...interface{}) *EBasic

func (*G) EImpure

func (g *G) EImpure(call Val) *EImpure

func (*G) EPrintString

func (g *G) EPrintString(val Val) string

func (*G) ERead

func (g *G) ERead(pos Pos, msg string, args ...interface{}) *ERead

func (*G) EString

func (g *G) EString(val Val) string

func (*G) EUnknown

func (g *G) EUnknown(id *Sym) *EUnknown

func (*G) Eq

func (g *G) Eq(lhs, rhs Val) (bool, E)

func (*G) Eval

func (g *G) Eval(task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*G) EvalString

func (g *G) EvalString(task *Task, env *Env, pos Pos, s string) (Val, E)

func (*G) Expand

func (g *G) Expand(task *Task, env *Env, val Val, depth Int) (Val, E)

func (*G) Extenv

func (g *G) Extenv(src, dst *Env, val Val, clone bool) E

func (*G) FindConst

func (g *G) FindConst(id *Sym) Val

func (*G) Float

func (g *G) Float(x Val) (Float, E)

func (*G) Index

func (g *G) Index(val Val, key Vec) (Val, E)

func (*G) Init

func (g *G) Init() (*G, E)

func (*G) Int

func (g *G) Int(x Val) (Int, E)

func (*G) Is

func (g *G) Is(lhs, rhs Val) bool

func (*G) Isa

func (g *G) Isa(val Val, parent Type) Type

func (*G) Iter

func (g *G) Iter(val Val) (Val, E)

func (*G) Len

func (g *G) Len(val Val) (Int, E)

func (*G) Load

func (g *G) Load(task *Task, env, args_env *Env, path string) (Val, E)

func (*G) Mul

func (g *G) Mul(x, y Val) (Val, E)

func (*G) Neg

func (g *G) Neg(x Val) (Val, E)

func (*G) NewEnv

func (g *G) NewEnv() *Env

func (*G) NewSym

func (g *G) NewSym(prefix string) *Sym

func (*G) NextSymTag

func (g *G) NextSymTag() Tag

func (*G) Pop

func (g *G) Pop(val Val) (Val, Val, E)

func (*G) Print

func (g *G) Print(val Val, out *bufio.Writer) E

func (*G) PrintString

func (g *G) PrintString(val Val) (string, E)

func (*G) Push

func (g *G) Push(val Val, its ...Val) (Val, E)

func (*G) Quote

func (g *G) Quote(task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*G) Read

func (g *G) Read(pos *Pos, in *strings.Reader, out Vec, end CharSet) (Vec, E)

func (*G) ReadAll

func (g *G) ReadAll(pos *Pos, in *strings.Reader, out Vec) (Vec, E)

func (*G) ReadByte

func (g *G) ReadByte(pos *Pos, in *strings.Reader, out Vec) (Vec, E)

func (*G) ReadChar

func (g *G) ReadChar(pos *Pos, in *strings.Reader) (rune, E)

func (*G) ReadId

func (g *G) ReadId(pos *Pos, in *strings.Reader, out Vec, prefix rune) (Vec, E)

func (*G) ReadNum

func (g *G) ReadNum(pos *Pos, in *strings.Reader, out Vec, prefix rune) (Vec, E)

func (*G) ReadQuote

func (g *G) ReadQuote(pos *Pos, in *strings.Reader, out Vec, end CharSet) (Vec, E)

func (*G) ReadSplat

func (g *G) ReadSplat(pos *Pos, in *strings.Reader, out Vec) (Vec, E)

func (*G) ReadSplice

func (g *G) ReadSplice(pos *Pos, in *strings.Reader, out Vec, end CharSet) (Vec, E)

func (*G) ReadStr

func (g *G) ReadStr(pos *Pos, in *strings.Reader, out Vec) (Vec, E)

func (*G) ReadVec

func (g *G) ReadVec(pos *Pos, in *strings.Reader, out Vec) (Vec, E)

func (*G) SetIndex

func (g *G) SetIndex(task *Task, env *Env, val Val, key Vec, set Setter) (Val, Val, E)

func (*G) Splat

func (g *G) Splat(val Val, out Vec) (Vec, E)

func (*G) String

func (g *G) String(val Val) (string, E)

func (*G) Sub

func (g *G) Sub(x, y Val) (Val, E)

func (*G) Sym

func (g *G) Sym(name string, args ...interface{}) *Sym

func (*G) Try

func (g *G) Try(task *Task, env, args_env *Env, body func() (Val, E), restarts ...*Fun) (v Val, e E)

func (*G) Unread

func (g *G) Unread(pos *Pos, in *strings.Reader, c rune) E

func (*G) Unwrap

func (g *G) Unwrap(val Val, silent bool) (Val, E)

func (*G) Version

func (g *G) Version() [3]byte

func (*G) VersionStr

func (g *G) VersionStr() string

func (*G) Wrap

func (g *G) Wrap(typ Type, val Val) (Val, E)

type Int

type Int int64

func (Int) Abs

func (i Int) Abs() Int

func (Int) Type

func (_ Int) Type(g *G) Type

type IntIter

type IntIter struct {
	// contains filtered or unexported fields
}

func (*IntIter) Init

func (i *IntIter) Init(g *G, max Int) *IntIter

func (*IntIter) Type

func (_ *IntIter) Type(g *G) Type

type IntIterType

type IntIterType struct {
	BasicIterType
}

func (*IntIterType) Bool

func (_ *IntIterType) Bool(g *G, val Val) (bool, E)

func (*IntIterType) Drop

func (_ *IntIterType) Drop(g *G, val Val, n Int) (Val, E)

func (*IntIterType) Dup

func (_ *IntIterType) Dup(g *G, val Val) (Val, E)

func (*IntIterType) Eq

func (_ *IntIterType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*IntIterType) Pop

func (_ *IntIterType) Pop(g *G, val Val) (Val, Val, E)

func (*IntIterType) Splat

func (_ *IntIterType) Splat(g *G, val Val, out Vec) (Vec, E)

type IntType

type IntType struct {
	NumType
}

func (*IntType) Abs

func (t *IntType) Abs(g *G, x Val) (Val, E)

func (*IntType) Add

func (t *IntType) Add(g *G, x, y Val) (Val, E)

func (*IntType) Bool

func (_ *IntType) Bool(g *G, val Val) (bool, E)

func (*IntType) Byte

func (_ *IntType) Byte(g *G, val Val) (Byte, E)

func (*IntType) Div

func (t *IntType) Div(g *G, x, y Val) (Val, E)

func (*IntType) Dump

func (_ *IntType) Dump(g *G, val Val, out *bufio.Writer) E

func (*IntType) Float

func (_ *IntType) Float(g *G, val Val) (Float, E)

func (*IntType) Int

func (_ *IntType) Int(g *G, val Val) (Int, E)

func (*IntType) Iter

func (_ *IntType) Iter(g *G, val Val) (Val, E)

func (*IntType) Mul

func (t *IntType) Mul(g *G, x, y Val) (Val, E)

func (*IntType) Neg

func (t *IntType) Neg(g *G, x Val) (Val, E)

func (*IntType) Sub

func (t *IntType) Sub(g *G, x, y Val) (Val, E)

type IterType

type IterType struct {
	BasicIterType
}

type Mac

type Mac struct {
	// contains filtered or unexported fields
}

func (*Mac) ExpandCall

func (m *Mac) ExpandCall(g *G, task *Task, env *Env, args Vec) (Val, E)

func (*Mac) Init

func (m *Mac) Init(g *G, env *Env, id *Sym, args []Arg) (*Mac, E)

func (*Mac) InitEnv

func (m *Mac) InitEnv(g *G, env *Env) E

func (*Mac) Type

func (m *Mac) Type(g *G) Type

type MacType

type MacType struct {
	BasicType
}

func (*MacType) ArgList

func (_ *MacType) ArgList(g *G, val Val) (*ArgList, E)

func (*MacType) Call

func (_ *MacType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (v Val, e E)

func (*MacType) Dump

func (_ *MacType) Dump(g *G, val Val, out *bufio.Writer) E

type MetaType

type MetaType struct {
	BasicType
}

func (*MetaType) Dump

func (_ *MetaType) Dump(g *G, val Val, out *bufio.Writer) E

type Nanos

type Nanos Int

func (Nanos) Type

func (_ Nanos) Type(g *G) Type

type NanosType

type NanosType struct {
	NumType
}

func (*NanosType) Div

func (_ *NanosType) Div(g *G, x, y Val) (Val, E)

func (*NanosType) Dump

func (_ *NanosType) Dump(g *G, val Val, out *bufio.Writer) E

func (*NanosType) Float

func (_ *NanosType) Float(g *G, val Val) (Float, E)

func (*NanosType) Int

func (_ *NanosType) Int(g *G, val Val) (Int, E)

func (*NanosType) Mul

func (_ *NanosType) Mul(g *G, x, y Val) (Val, E)

func (*NanosType) Sub

func (_ *NanosType) Sub(g *G, x, y Val) (Val, E)

type Nil

type Nil struct {
}

func (*Nil) Type

func (_ *Nil) Type(g *G) Type

type NilType

type NilType struct {
	BasicType
}

func (*NilType) Bool

func (_ *NilType) Bool(g *G, val Val) (bool, E)

func (*NilType) Dump

func (_ *NilType) Dump(g *G, val Val, out *bufio.Writer) E

type Num

type Num interface {
	Type
	Abs(*G, Val) (Val, E)
	Add(*G, Val, Val) (Val, E)
	Byte(*G, Val) (Byte, E)
	Div(*G, Val, Val) (Val, E)
	Float(*G, Val) (Float, E)
	Int(*G, Val) (Int, E)
	Mul(*G, Val, Val) (Val, E)
	Neg(*G, Val) (Val, E)
	Sub(*G, Val, Val) (Val, E)
}

type NumType

type NumType struct {
	BasicType
}

func (*NumType) Abs

func (_ *NumType) Abs(g *G, val Val) (Val, E)

func (*NumType) Add

func (_ *NumType) Add(g *G, x Val, _ Val) (Val, E)

func (*NumType) Byte

func (_ *NumType) Byte(g *G, val Val) (Byte, E)

func (*NumType) Div

func (_ *NumType) Div(g *G, x Val, _ Val) (Val, E)

func (*NumType) Float

func (_ *NumType) Float(g *G, val Val) (Float, E)

func (*NumType) Inc

func (_ *NumType) Inc(g *G, val, delta Val) (Val, E)

func (*NumType) Int

func (_ *NumType) Int(g *G, val Val) (Int, E)

func (*NumType) Mul

func (_ *NumType) Mul(g *G, x Val, _ Val) (Val, E)

func (*NumType) Neg

func (_ *NumType) Neg(g *G, val Val) (Val, E)

func (*NumType) Sub

func (_ *NumType) Sub(g *G, x Val, _ Val) (Val, E)

type Pos

type Pos struct {
	Row, Col int
	// contains filtered or unexported fields
}
var (
	INIT_POS, NIL_POS Pos
)

func (Pos) Dump

func (p Pos) Dump(out *strings.Builder)

func (*Pos) Init

func (p *Pos) Init(src string) *Pos

type Prim

type Prim struct {
	// contains filtered or unexported fields
}

func NewPrim

func NewPrim(g *G, id *Sym, pure bool, imp PrimImp, args []Arg) *Prim

func (*Prim) Type

func (_ *Prim) Type(g *G) Type

type PrimImp

type PrimImp func(*G, *Task, *Env, Vec, *Env) (Val, E)

type PrimType

type PrimType struct {
	BasicType
}

func (*PrimType) ArgList

func (_ *PrimType) ArgList(g *G, val Val) (*ArgList, E)

func (*PrimType) Call

func (_ *PrimType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (Val, E)

func (*PrimType) Dump

func (_ *PrimType) Dump(g *G, val Val, out *bufio.Writer) E

type PunType

type PunType struct {
	FunType
}

type Quote

type Quote struct {
	BasicWrap
}

func NewQuote

func NewQuote(g *G, val Val) (q Quote)

func (Quote) Type

func (_ Quote) Type(g *G) Type

type QuoteType

type QuoteType struct {
	BasicWrapType
}

func (*QuoteType) Dump

func (_ *QuoteType) Dump(g *G, val Val, out *bufio.Writer) E

func (*QuoteType) Eq

func (_ *QuoteType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*QuoteType) Eval

func (_ *QuoteType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*QuoteType) Quote

func (_ *QuoteType) Quote(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*QuoteType) Unwrap

func (_ *QuoteType) Unwrap(val Val) Val

func (*QuoteType) Wrap

func (_ *QuoteType) Wrap(g *G, val Val) Val

type Recall

type Recall struct {
	// contains filtered or unexported fields
}

func NewRecall

func NewRecall(args Vec) (r Recall)

func (Recall) Type

func (_ Recall) Type(g *G) Type

type RecallType

type RecallType struct {
	BasicType
}

func (RecallType) Dump

func (_ RecallType) Dump(g *G, val Val, out *bufio.Writer) (e E)

type Restart

type Restart struct {
	// contains filtered or unexported fields
}

func (Restart) Dump

func (r Restart) Dump(g *G, out *bufio.Writer) E

func (Restart) Type

func (_ Restart) Type(g *G) Type

type RestartType

type RestartType struct {
	BasicType
}

func (*RestartType) Call

func (_ *RestartType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (Val, E)

func (*RestartType) Dump

func (_ *RestartType) Dump(g *G, val Val, out *bufio.Writer) E

type Retry

type Retry struct{}

func (Retry) Type

func (_ Retry) Type(g *G) Type

type RetryType

type RetryType struct {
	BasicType
}

func (RetryType) Dump

func (_ RetryType) Dump(g *G, val Val, out *bufio.Writer) E

type SeqType

type SeqType struct {
	BasicType
}

type Setter

type Setter func(Val) (Val, E)

func (Setter) Type

func (_ Setter) Type(g *G) Type

type SetterType

type SetterType struct {
	BasicType
	// contains filtered or unexported fields
}

func (*SetterType) ArgList

func (t *SetterType) ArgList(g *G, _ Val) (*ArgList, E)

func (*SetterType) Call

func (_ *SetterType) Call(g *G, task *Task, env *Env, val Val, args Vec, args_env *Env) (v Val, e E)

func (*SetterType) Dump

func (_ *SetterType) Dump(g *G, val Val, out *bufio.Writer) E

func (*SetterType) Init

func (t *SetterType) Init(g *G, id *Sym, parents []Type) (e E)

type Splat

type Splat struct {
	BasicWrap
}

func NewSplat

func NewSplat(g *G, val Val) (s Splat)

func (Splat) Type

func (_ Splat) Type(g *G) Type

type SplatType

type SplatType struct {
	BasicWrapType
}

func (*SplatType) Dump

func (_ *SplatType) Dump(g *G, val Val, out *bufio.Writer) E

func (*SplatType) Eval

func (_ *SplatType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (v Val, e E)

func (*SplatType) Expand

func (_ *SplatType) Expand(g *G, task *Task, env *Env, val Val, depth Int) (v Val, e E)

func (*SplatType) Quote

func (_ *SplatType) Quote(g *G, task *Task, env *Env, val Val, args_env *Env) (v Val, e E)

func (*SplatType) Splat

func (_ *SplatType) Splat(g *G, val Val, out Vec) (Vec, E)

func (*SplatType) Unwrap

func (_ *SplatType) Unwrap(val Val) Val

func (*SplatType) Wrap

func (_ *SplatType) Wrap(g *G, val Val) Val

type Splice

type Splice struct {
	BasicWrap
}

func NewSplice

func NewSplice(g *G, val Val) (s Splice)

func (Splice) Type

func (_ Splice) Type(g *G) Type

type SpliceType

type SpliceType struct {
	BasicWrapType
}

func (*SpliceType) Dump

func (_ *SpliceType) Dump(g *G, val Val, out *bufio.Writer) E

func (*SpliceType) Eval

func (_ *SpliceType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*SpliceType) Quote

func (_ *SpliceType) Quote(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*SpliceType) Unwrap

func (_ *SpliceType) Unwrap(val Val) Val

func (*SpliceType) Wrap

func (_ *SpliceType) Wrap(g *G, val Val) Val

type Str

type Str []rune

func (Str) Len

func (s Str) Len() Int

func (Str) Type

func (_ Str) Type(g *G) Type

type StrType

type StrType struct {
	BasicType
}

func (*StrType) Bool

func (_ *StrType) Bool(g *G, val Val) (bool, E)

func (*StrType) Drop

func (_ *StrType) Drop(g *G, val Val, n Int) (Val, E)

func (*StrType) Dump

func (_ *StrType) Dump(g *G, val Val, out *bufio.Writer) E

func (*StrType) Eq

func (_ *StrType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*StrType) Len

func (_ *StrType) Len(g *G, val Val) (Int, E)

func (*StrType) Print

func (_ *StrType) Print(g *G, val Val, out *bufio.Writer) E

type Sym

type Sym struct {
	// contains filtered or unexported fields
}

func NewSym

func NewSym(g *G, tag Tag, name string) *Sym

func (*Sym) Init

func (s *Sym) Init(g *G, tag Tag, name string) *Sym

func (*Sym) Lookup

func (s *Sym) Lookup(g *G, task *Task, env, args_env *Env, silent bool) (Val, *Env, []Val, E)

func (*Sym) LookupVar

func (s *Sym) LookupVar(g *G, env *Env, silent bool) (v *Var, i int, _ *Env, args []Val, e E)

func (*Sym) String

func (s *Sym) String() string

func (*Sym) Suffix

func (s *Sym) Suffix() *Sym

func (*Sym) Type

func (_ *Sym) Type(g *G) Type

type SymType

type SymType struct {
	BasicType
}

func (*SymType) Dump

func (_ *SymType) Dump(g *G, val Val, out *bufio.Writer) E

func (*SymType) Eval

func (_ *SymType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (v Val, e E)

func (*SymType) Expand

func (_ *SymType) Expand(g *G, task *Task, env *Env, val Val, depth Int) (v Val, e E)

func (*SymType) Extenv

func (_ *SymType) Extenv(g *G, src, dst *Env, val Val, clone bool) E

func (*SymType) SetIndex

func (_ *SymType) SetIndex(g *G, task *Task, env *Env, in Val, key Vec, set Setter) (val Val, out Val, e E)

type Tag

type Tag uint64

func (Tag) Compare

func (x Tag) Compare(y Tag) int

type Task

type Task struct {
	Inbox Chan
	// contains filtered or unexported fields
}

func (*Task) Init

func (t *Task) Init(g *G, env *Env, id *Sym, inbox Chan, body Vec) (*Task, E)

func (*Task) Start

func (t *Task) Start(g *G, env *Env) E

func (*Task) Type

func (t *Task) Type(g *G) Type

func (*Task) Wait

func (t *Task) Wait() Val

type TaskType

type TaskType struct {
	BasicType
}

func (*TaskType) Bool

func (_ *TaskType) Bool(g *G, val Val) (bool, E)

func (*TaskType) Dump

func (_ *TaskType) Dump(g *G, val Val, out *bufio.Writer) E

type Time

type Time time.Time

func (Time) Type

func (_ Time) Type(g *G) Type

type TimeType

type TimeType struct {
	NumType
}

func (*TimeType) Dump

func (_ *TimeType) Dump(g *G, val Val, out *bufio.Writer) E

func (*TimeType) Sub

func (t *TimeType) Sub(g *G, x, y Val) (Val, E)

type True

type True struct {
}

func (*True) Type

func (_ *True) Type(g *G) Type

type TrueType

type TrueType struct {
	BasicType
}

func (*TrueType) Dump

func (_ *TrueType) Dump(g *G, val Val, out *bufio.Writer) E

type Try

type Try struct {
	// contains filtered or unexported fields
}

func (*Try) AddRestart

func (t *Try) AddRestart(g *G, imp *Fun) E

func (*Try) Init

func (t *Try) Init(prev *Try) *Try

func (*Try) NewRestart

func (t *Try) NewRestart(imp *Fun) (r Restart)

type Type

type Type interface {
	fmt.Stringer
	Val

	Init(*G, *Sym, []Type) E

	ArgList(*G, Val) (*ArgList, E)
	Bool(*G, Val) (bool, E)
	Call(*G, *Task, *Env, Val, Vec, *Env) (Val, E)
	Clone(*G, Val) (Val, E)
	Drop(*G, Val, Int) (Val, E)
	Dump(*G, Val, *bufio.Writer) E
	Dup(*G, Val) (Val, E)
	EachParent(func(Type))
	Env() *Env
	Eq(*G, Val, Val) (bool, E)
	Eval(*G, *Task, *Env, Val, *Env) (Val, E)
	Expand(*G, *Task, *Env, Val, Int) (Val, E)
	Extenv(*G, *Env, *Env, Val, bool) E
	Id() *Sym
	Index(*G, Val, Vec) (Val, E)
	Is(*G, Val, Val) bool
	Isa(Type) Type
	Iter(*G, Val) (Val, E)
	Len(*G, Val) (Int, E)
	Pop(*G, Val) (Val, Val, E)
	Print(*G, Val, *bufio.Writer) E
	Push(*G, Val, ...Val) (Val, E)
	Quote(*G, *Task, *Env, Val, *Env) (Val, E)
	SetIndex(*G, *Task, *Env, Val, Vec, Setter) (Val, Val, E)
	Splat(*G, Val, Vec) (Vec, E)
}

type Val

type Val interface {
	Type(*G) Type
}

type Var

type Var struct {
	Val Val
	// contains filtered or unexported fields
}

func (*Var) Clone

func (v *Var) Clone(g *G, env *Env) (dst *Var, e E)

func (*Var) Dump

func (v *Var) Dump(g *G, out *bufio.Writer)

func (*Var) Init

func (v *Var) Init(env *Env, key *Sym) *Var

func (*Var) Update

func (v *Var) Update(g *G, env *Env, f func(Val) (Val, E)) (Val, E)

type Vec

type Vec []Val

func ParsePrimArgs

func ParsePrimArgs(g *G, args Val) Vec

func (Vec) Delete

func (v Vec) Delete(i int) Vec

func (Vec) EvalExpr

func (v Vec) EvalExpr(g *G, task *Task, env, args_env *Env) (Val, E)

func (Vec) EvalVec

func (v Vec) EvalVec(g *G, task *Task, env, args_env *Env) (Vec, E)

func (Vec) ExpandVec

func (v Vec) ExpandVec(g *G, task *Task, env *Env, depth Int) (Vec, E)

func (Vec) Len

func (v Vec) Len() Int

func (Vec) Peek

func (v Vec) Peek(g *G) Val

func (Vec) PopKey

func (v Vec) PopKey(g *G, key *Sym) (Val, Val, E)

func (Vec) Reverse

func (v Vec) Reverse() Vec

func (Vec) Type

func (_ Vec) Type(g *G) Type

type VecIter

type VecIter struct {
	// contains filtered or unexported fields
}

func (*VecIter) Init

func (i *VecIter) Init(g *G, in Vec) *VecIter

func (*VecIter) Type

func (_ *VecIter) Type(g *G) Type

type VecIterType

type VecIterType struct {
	BasicIterType
}

func (*VecIterType) Bool

func (_ *VecIterType) Bool(g *G, val Val) (bool, E)

func (*VecIterType) Drop

func (_ *VecIterType) Drop(g *G, val Val, n Int) (Val, E)

func (*VecIterType) Dup

func (_ *VecIterType) Dup(g *G, val Val) (Val, E)

func (*VecIterType) Eq

func (_ *VecIterType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*VecIterType) Pop

func (_ *VecIterType) Pop(g *G, val Val) (Val, Val, E)

func (*VecIterType) Splat

func (_ *VecIterType) Splat(g *G, val Val, out Vec) (Vec, E)

type VecType

type VecType struct {
	SeqType
}

func (*VecType) Bool

func (_ *VecType) Bool(g *G, val Val) (bool, E)

func (*VecType) Clone

func (_ *VecType) Clone(g *G, val Val) (Val, E)

func (*VecType) Drop

func (_ *VecType) Drop(g *G, val Val, n Int) (Val, E)

func (*VecType) Dump

func (_ *VecType) Dump(g *G, val Val, out *bufio.Writer) E

func (*VecType) Dup

func (_ *VecType) Dup(g *G, val Val) (Val, E)

func (*VecType) Eq

func (_ *VecType) Eq(g *G, lhs, rhs Val) (bool, E)

func (*VecType) Eval

func (_ *VecType) Eval(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*VecType) Expand

func (_ *VecType) Expand(g *G, task *Task, env *Env, val Val, depth Int) (Val, E)

func (*VecType) Extenv

func (_ *VecType) Extenv(g *G, src, dst *Env, val Val, clone bool) E

func (*VecType) Index

func (_ *VecType) Index(g *G, val Val, key Vec) (Val, E)

func (*VecType) Is

func (_ *VecType) Is(g *G, lhs, rhs Val) bool

func (*VecType) Iter

func (_ *VecType) Iter(g *G, val Val) (Val, E)

func (*VecType) Len

func (_ *VecType) Len(g *G, val Val) (Int, E)

func (*VecType) Pop

func (_ *VecType) Pop(g *G, val Val) (Val, Val, E)

func (*VecType) Print

func (_ *VecType) Print(g *G, val Val, out *bufio.Writer) E

func (*VecType) Push

func (_ *VecType) Push(g *G, val Val, its ...Val) (Val, E)

func (*VecType) Quote

func (_ *VecType) Quote(g *G, task *Task, env *Env, val Val, args_env *Env) (Val, E)

func (*VecType) SetIndex

func (_ *VecType) SetIndex(g *G, task *Task, env *Env, in Val, key Vec, set Setter) (val Val, _ Val, e E)

func (*VecType) Splat

func (_ *VecType) Splat(g *G, val Val, out Vec) (Vec, E)

type WrapType

type WrapType interface {
	Type
	Unwrap(Val) Val
	Wrap(*G, Val) Val
}

type Writer

type Writer bufio.Writer

func NewWriter

func NewWriter(in io.Writer) *Writer

func (*Writer) Type

func (_ *Writer) Type(g *G) Type

type WriterType

type WriterType struct {
	BasicType
}

func (*WriterType) Dump

func (_ *WriterType) Dump(g *G, val Val, out *bufio.Writer) E

Jump to

Keyboard shortcuts

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