Compare commits
6 Commits
7acab5d229
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17bdfdcbcb | ||
|
|
d9898aa64d | ||
|
|
e7b62ab770 | ||
|
|
c9baa8a227 | ||
|
|
a87ceb2f19 | ||
|
|
e6cf7aa636 |
@@ -15,9 +15,9 @@ set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
|
||||
# set(CMAKE_CXX_FLAGS "-Wall -Wextra")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||
|
||||
include_directories(/usr/local/opt/openssl/include ${CMAKE_SOURCE_DIR}/clib ${CMAKE_SOURCE_DIR})
|
||||
include_directories(/opt/homebrew/opt/openssl@1.1/include ${CMAKE_SOURCE_DIR}/clib ${CMAKE_SOURCE_DIR})
|
||||
|
||||
link_directories(/usr/local/lib /usr/local/opt/openssl/lib)
|
||||
link_directories(/opt/homebrew/opt/openssl@1.1/lib)
|
||||
|
||||
|
||||
project(ml)
|
||||
|
||||
1082
doc/Doc.html
Normal file
1082
doc/Doc.html
Normal file
File diff suppressed because it is too large
Load Diff
12
doc/Doc.md
12
doc/Doc.md
@@ -40,14 +40,14 @@
|
||||
|`(set! x)`|`set!` ...|....|Language|
|
||||
|
||||
## Macros
|
||||
|Signature|Description|Return values|Section|
|
||||
|Signature|Description|Example|Section|
|
||||
|:-|-|-|-|
|
||||
|`(unles cond body)`|`unless` only evaluates its `cond` argument. If `cond` is not truthy, then `body` is evaluated.|`>>> (unless #t (print "it is #f")) => nil`|Language|
|
||||
|`(dotimes v n body)`|Iterates over `v` from 0 below `n` and evaluated `body`. Returns the last value of v|`>>> (dotimes i 5 i) => 4`|Language|
|
||||
|`(until cond body)`|Evaluated `body` as long as `cond` is not truthy|`>>> (def i 0)(until (> i 3) (set! i (inc i))) => 4`|Language|
|
||||
|
||||
## Library
|
||||
|Signature|Description|Return values|Section|
|
||||
|Signature|Description|Example|Section|
|
||||
|:-|-|-|-|
|
||||
|`(= a b)`|Test whether two values are equal|`1` when equal otherwise `nil`|Language|
|
||||
|`(!= a b)`|Test whether two values are not equal|`1` when not equal otherwise `nil`|Language|
|
||||
@@ -63,10 +63,10 @@
|
||||
|`(list ..)`|Create a list of values||List manipulation|
|
||||
|`(insert list index element)`|Insert an element into a list. Indexed from 0|new list with value inserted|List manipulation|
|
||||
|`(index list index)`|Return element at index in list. First element is at index 0|Element at index|List manipulation|
|
||||
|`(remove list index)`|Remove a value at an index from a list|List with element removed|List manipulation|
|
||||
|`(len list)`|Get the length of a list|list length|List manipulation|
|
||||
|`(push list element)`|Add an item to the end of a list|new list with element added|List manipulation|
|
||||
|`(pop list)`|Returns last element of list|Last element|List manipulation|
|
||||
|`(remove list index)`|Remove a value at an index from a list|`>>> (remove '(1 2 3 4) 1) => (1 3 4)`|List manipulation|
|
||||
|`(len list)`|Get the length of a list|`>>> (len '(1 2 3 4)) => 4`|List manipulation|
|
||||
|`(push list element)`|Add an item to the end of a list|`>>> (push '(1 2 3 4) 5) => (1 2 3 4 5)`|List manipulation|
|
||||
|`(pop list)`|Returns last element of list|`>>> (pop '(1 2 3 4)) => 4`|List manipulation|
|
||||
|`(head list)`|Returns first element of a list|`>>> (head '(1 2 3)) => 1`|List manipulation|
|
||||
|`(tail list)`|Return all elements of list except first one|`>>> (tail '(1 2 3)) => (2 3)`|List manipulation|
|
||||
|`(first list)`|Returns first element of a list|`>>> (first '(1 2 3)) => 1`|List manipulation|
|
||||
|
||||
22
doc/readme.txt
Normal file
22
doc/readme.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
to convert Doc.md to Doc.html use https://markdowntohtml.com/ with custom ccs style
|
||||
|
||||
body {
|
||||
color: black;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
table, th, td {
|
||||
border: 1px solid;
|
||||
}
|
||||
th {
|
||||
text-align: left;
|
||||
}
|
||||
td {
|
||||
height: 50px;
|
||||
vertical-align: top;
|
||||
}
|
||||
code{
|
||||
background: #0003;
|
||||
color: #a31515;
|
||||
}
|
||||
9
ml.cpp
9
ml.cpp
@@ -2196,9 +2196,6 @@ MlValue usql(std::vector<MlValue> args, MlEnvironment &env) {
|
||||
|
||||
} // namespace builtin
|
||||
|
||||
void load_std_lib(MlEnvironment &env) {
|
||||
run(STDLIB_LOADER, env);
|
||||
}
|
||||
|
||||
// Does this environment, or its parent environment, have a variable?
|
||||
bool MlEnvironment::has(const std::string &name) const {
|
||||
@@ -2440,6 +2437,12 @@ std::vector<std::string> getCmdOption(char *argv[], int argc, const std::string
|
||||
return tokens;
|
||||
}
|
||||
|
||||
|
||||
void load_std_lib(MlEnvironment &env) {
|
||||
run(STDLIB_LOADER, env);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
MlEnvironment env;
|
||||
std::vector<MlValue> args;
|
||||
|
||||
@@ -43,6 +43,12 @@
|
||||
nil
|
||||
))
|
||||
|
||||
(defn doc::print-entry (entry)
|
||||
(do (def call (doc::strip-backticks (second entry)))
|
||||
(def desc (doc::strip-backticks (third entry)))
|
||||
(print (term-red (first entry)) "-" (term-green (doc::strip-backticks (second entry))) "-" (third entry))
|
||||
))
|
||||
|
||||
(defn doc::man (what)
|
||||
(do (def man (filter (lambda (x) (= (first x) what)) doc::doc_entries))
|
||||
(if man
|
||||
@@ -75,29 +81,54 @@
|
||||
|
||||
(def sorted (quick-sort-by scores (lambda (a b) (< (first a) (first b)))))
|
||||
(for e (take sorted 10)
|
||||
(def entry (second e))
|
||||
(def call (doc::strip-backticks (second entry)))
|
||||
(def desc (doc::strip-backticks (third entry)))
|
||||
(print (term-red (first entry)) "-" (term-green (doc::strip-backticks (second entry))) "-" (third entry))
|
||||
)
|
||||
(doc::print-entry (second e)))
|
||||
|
||||
(if (> (len sorted) 10) (print "..."))
|
||||
))
|
||||
|
||||
(defn doc::section (what)
|
||||
(do
|
||||
(def entries '())
|
||||
(for entry doc::doc_entries
|
||||
; ("throw-exception" "`(throw-exception exp_desc)`" "Throws an exception with exp_desc describing what happened " "" "Exceptions"
|
||||
; section matches
|
||||
(if (= (string-downcase (fifth entry)) (string-downcase what))
|
||||
(set! entries (push entries entry)))
|
||||
)
|
||||
|
||||
(for e (quick-sort-by entries (lambda (a b) (> (string-cmp (first a) (first b)) 0)))
|
||||
(doc::print-entry e))
|
||||
))
|
||||
|
||||
(defn doc::all ()
|
||||
(for e (quick-sort-by doc::doc_entries (lambda (a b) (> (string-cmp (first a) (first b)) 0)))
|
||||
(doc::print-entry e))
|
||||
)
|
||||
|
||||
(defn doc::appropos (which)
|
||||
(doc::look which))
|
||||
|
||||
(defn doc::lookup (which)
|
||||
(doc::look which))
|
||||
|
||||
;(defn doc::section (which)
|
||||
; (print (term-red "implement me!")))
|
||||
(defn doc::doc ()
|
||||
(do
|
||||
(print "Usage:")
|
||||
(print "\t(doc::doc) - shows this help")
|
||||
(print "\t(doc::man func) - func must be a string, ie (doc::man \"for\")")
|
||||
(print "\t(doc::look str) - str must be a string, ie (doc::look \"length\")")
|
||||
(print "\t(doc::lookup) - alias for doc::look")
|
||||
(print "\t(doc::appropos) - alias for doc::look")
|
||||
(print "\t(doc::all) - show short info about all functions")
|
||||
(print "\t(doc::section sec) - show help for section, sec is string one of:")
|
||||
(print "\t\t\t\t\"List manipulation\" \"Language\" \"System\"")
|
||||
(print "\t\t\t\t\"String manipulation\" \"Date and time\" \"IO\" \"Regex\"")
|
||||
(print "\t\t\t\t\"Type casting\" \"Threading\" \"Exceptions\"")
|
||||
))
|
||||
|
||||
|
||||
(def doc::doc_entries '()) ; must be here
|
||||
|
||||
; read doc into memory
|
||||
(doc::read-doc-file "/usr/local/var/mlisp/Doc.md")
|
||||
|
||||
;;example
|
||||
; (doc::man "first")
|
||||
; (doc::look "string pad")
|
||||
; (doc::look "list flat")
|
||||
|
||||
@@ -8,11 +8,19 @@ echo "building ml"
|
||||
cmake --build ./ --target all -j 4 --
|
||||
|
||||
echo ""
|
||||
|
||||
# echo "create dirs"
|
||||
# sudo mkdir -p /usr/local/var/mlisp/
|
||||
# sudo mkdir -p /usr/local/bin/
|
||||
# sudo chown -R vaclavt:admin /usr/local/bin/
|
||||
# sudo chown -R vaclavt:admin /usr/local/var/mlisp/
|
||||
|
||||
echo "copying lsp files"
|
||||
mkdir -p /usr/local/var/mlisp/
|
||||
cp stdlib/*.lsp /usr/local/var/mlisp/
|
||||
|
||||
echo "copying doc files"
|
||||
cp doc/*.md /usr/local/var/mlisp/
|
||||
|
||||
echo "copying ml file"
|
||||
mv ./ml /usr/local/bin/ml
|
||||
|
||||
|
||||
Reference in New Issue
Block a user