|
|
|
@ -18,7 +18,7 @@ import (
|
|
|
|
|
|
|
|
|
|
var stdLibrary = vars{
|
|
|
|
|
"PI": number(math.Pi),
|
|
|
|
|
"E": number(math.E),
|
|
|
|
|
"E": number(math.E),
|
|
|
|
|
"positive?": func(a ...expression) expression {
|
|
|
|
|
if len(a) > 0 {
|
|
|
|
|
if n, ok := a[0].(number); ok {
|
|
|
|
@ -319,7 +319,7 @@ var stdLibrary = vars{
|
|
|
|
|
if len(a) == 0 {
|
|
|
|
|
panic("'pair?' expected a value, but no value was given")
|
|
|
|
|
}
|
|
|
|
|
switch i:= a[0].(type) {
|
|
|
|
|
switch i := a[0].(type) {
|
|
|
|
|
case []expression:
|
|
|
|
|
return len(i) > 0
|
|
|
|
|
default:
|
|
|
|
@ -348,7 +348,7 @@ var stdLibrary = vars{
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"length": func (a ...expression) expression {
|
|
|
|
|
"length": func(a ...expression) expression {
|
|
|
|
|
switch i := a[0].(type) {
|
|
|
|
|
case []expression:
|
|
|
|
|
return number(len(i))
|
|
|
|
@ -471,7 +471,7 @@ var stdLibrary = vars{
|
|
|
|
|
}
|
|
|
|
|
return mainList
|
|
|
|
|
},
|
|
|
|
|
"list": eval(Parse("(lambda z z)").([]expression)[0],&globalenv),
|
|
|
|
|
"list": eval(Parse("(lambda z z)").([]expression)[0], &globalenv),
|
|
|
|
|
"list-ref": func(a ...expression) expression {
|
|
|
|
|
if len(a) < 2 {
|
|
|
|
|
panic("'list-ref' expects 2 arguments, a list and a number, no arguments were given")
|
|
|
|
@ -497,7 +497,7 @@ var stdLibrary = vars{
|
|
|
|
|
case []expression:
|
|
|
|
|
out := make([]expression, len(l))
|
|
|
|
|
for i, n := range l {
|
|
|
|
|
j := len(l)- i - 1
|
|
|
|
|
j := len(l) - i - 1
|
|
|
|
|
out[j] = n
|
|
|
|
|
}
|
|
|
|
|
return out
|
|
|
|
@ -892,7 +892,7 @@ var stdLibrary = vars{
|
|
|
|
|
panic("'substring' expects a number as its second argument")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if n1 < 0 || n1 >= n2{
|
|
|
|
|
if n1 < 0 || n1 >= n2 {
|
|
|
|
|
panic("start position of 'substring' is out of range")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1000,13 +1000,13 @@ var stdLibrary = vars{
|
|
|
|
|
panic("'file-open-write' expects a filepath, no filepath was given")
|
|
|
|
|
}
|
|
|
|
|
if fp, ok := a[0].(string); ok {
|
|
|
|
|
flags := os.O_CREATE | os.O_WRONLY
|
|
|
|
|
flags := os.O_CREATE | os.O_WRONLY
|
|
|
|
|
if len(a) >= 2 {
|
|
|
|
|
if b, ok := a[1].(bool); ok && b {
|
|
|
|
|
flags = flags | os.O_TRUNC
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
f, err := os.OpenFile(fp, flags ,0664)
|
|
|
|
|
f, err := os.OpenFile(fp, flags, 0664)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
@ -1041,7 +1041,7 @@ var stdLibrary = vars{
|
|
|
|
|
}
|
|
|
|
|
panic("'file-append-to' expects a filepath, as a string, as its first argument")
|
|
|
|
|
},
|
|
|
|
|
"open?": func (a ...expression) expression {
|
|
|
|
|
"open?": func(a ...expression) expression {
|
|
|
|
|
if len(a) < 1 {
|
|
|
|
|
panic("'open?' expects an IO handle, no argument was given")
|
|
|
|
|
}
|
|
|
|
@ -1143,7 +1143,7 @@ var stdLibrary = vars{
|
|
|
|
|
if usetls {
|
|
|
|
|
conf := &tls.Config{InsecureSkipVerify: true}
|
|
|
|
|
if timeout > 0 {
|
|
|
|
|
tlsconn, err = tls.DialWithDialer(&net.Dialer{Timeout: time.Duration(timeout)*time.Second}, "tcp", addr, conf)
|
|
|
|
|
tlsconn, err = tls.DialWithDialer(&net.Dialer{Timeout: time.Duration(timeout) * time.Second}, "tcp", addr, conf)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
@ -1155,7 +1155,7 @@ var stdLibrary = vars{
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if timeout > 0 {
|
|
|
|
|
conn, err = net.DialTimeout("tcp", addr, time.Duration(timeout) * time.Second)
|
|
|
|
|
conn, err = net.DialTimeout("tcp", addr, time.Duration(timeout)*time.Second)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
@ -1247,7 +1247,7 @@ var stdLibrary = vars{
|
|
|
|
|
if len(a) >= 2 {
|
|
|
|
|
switch s := a[1].(type) {
|
|
|
|
|
case string:
|
|
|
|
|
u.RawQuery= s
|
|
|
|
|
u.RawQuery = s
|
|
|
|
|
case symbol:
|
|
|
|
|
u.RawQuery = string(s)
|
|
|
|
|
default:
|
|
|
|
@ -1307,9 +1307,12 @@ var stdLibrary = vars{
|
|
|
|
|
}
|
|
|
|
|
return u.Scheme
|
|
|
|
|
},
|
|
|
|
|
"license": func(a ...expression) expression {
|
|
|
|
|
fmt.Println(licenseText)
|
|
|
|
|
return make([]expression, 0)
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
TODO:
|
|
|
|
|
|
|
|
|
@ -1416,4 +1419,3 @@ System Based:
|
|
|
|
|
[x] equal? (compares any two things)
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|