Compare commits
4 Commits
c345ac4fe5
...
f2b0e38464
Author | SHA1 | Date | |
---|---|---|---|
f2b0e38464 | |||
1e2c107c1b | |||
c29d463adf | |||
5f57c5aed3 |
@ -2,7 +2,6 @@ fun <- ->
|
|||||||
do-something()
|
do-something()
|
||||||
do-something-else()
|
do-something-else()
|
||||||
|
|
||||||
|
|
||||||
foo <- ->
|
foo <- ->
|
||||||
bar <- ->
|
bar <- ->
|
||||||
baz <- ->
|
baz <- ->
|
||||||
@ -11,8 +10,7 @@ foo <- ->
|
|||||||
|
|
||||||
foo() ## Inside foo but not in baz or bar
|
foo() ## Inside foo but not in baz or bar
|
||||||
|
|
||||||
add <- x -> y ->
|
add <- x -> y -> x + y ## Multivariable functions by currying
|
||||||
return x + y ## Multivariable functions by currying
|
|
||||||
|
|
||||||
add(x) ## Returns a _function_
|
add(x) ## Returns a _function_
|
||||||
add(x, y) ## This is equivalent to add(x)(y)
|
add(x, y) ## This is equivalent to add(x)(y)
|
@ -1,24 +1,11 @@
|
|||||||
## By the end of the book I want to have an interpreter
|
|
||||||
## for this little language, maybe a compiler too
|
|
||||||
|
|
||||||
print(1 + 1) ## 2
|
print(1 + 1) ## 2
|
||||||
print("Hello world!") ## Hello world
|
print("Hello world!") ## Hello world
|
||||||
|
|
||||||
name <- read()
|
|
||||||
print("Hi there $name") ## Hi there <name>
|
|
||||||
|
|
||||||
have <- 10
|
have <- 10
|
||||||
want <- 11
|
want <- 11
|
||||||
need <- have - want ## This is subtraction
|
need <- have - want ## This is subtraction
|
||||||
have-want <- 1 ## This is a variable named "have-want"
|
have-want <- 1 ## This is a variable named "have-want"
|
||||||
|
|
||||||
print(HaVe-WAnt) ## 1 (case doesn't matter)
|
|
||||||
%%option meaningful-casing
|
|
||||||
Apples <- 1
|
|
||||||
print(apples) ## <undef> (or maybe it does)
|
|
||||||
|
|
||||||
print("one fish"); print("two fish") ## Two statements on the same line
|
|
||||||
|
|
||||||
say-hi <- -> print("Hi from inside a function")
|
say-hi <- -> print("Hi from inside a function")
|
||||||
say-hi() ## Hi from inside a function
|
say-hi() ## Hi from inside a function
|
||||||
|
|
||||||
@ -31,8 +18,8 @@ duck <- {
|
|||||||
eats? <- food -> food = "bread"
|
eats? <- food -> food = "bread"
|
||||||
} ## Objects created on the fly
|
} ## Objects created on the fly
|
||||||
|
|
||||||
print duck.eats?("bread") ## true
|
print(duck.eats?("bread")) ## true
|
||||||
print duck.eats?("corn") ## false
|
print(duck.eats?("corn")) ## false
|
||||||
|
|
||||||
cow <- {
|
cow <- {
|
||||||
talk <- print("Moo")
|
talk <- print("Moo")
|
||||||
@ -43,11 +30,11 @@ human <- {
|
|||||||
eats? <- _ -> true
|
eats? <- _ -> true
|
||||||
}
|
}
|
||||||
|
|
||||||
print cow.eats?("grass") ## true
|
print(cow.eats?("grass")) ## true
|
||||||
print cow.eats?("corn") ## true
|
print(cow.eats?("corn")) ## true
|
||||||
|
|
||||||
talk-or-pass-wind <- character ->
|
talk-or-pass-wind <- character ->
|
||||||
if character has talk then
|
if character has talk
|
||||||
character.talk()
|
character.talk()
|
||||||
else
|
else
|
||||||
print("*Fart*")
|
print("*Fart*")
|
||||||
|
@ -4,7 +4,7 @@ use std::collections::HashSet;
|
|||||||
use crate::parser;
|
use crate::parser;
|
||||||
|
|
||||||
fn munge(s: &str) -> String {
|
fn munge(s: &str) -> String {
|
||||||
s.replace("?", "_INT_").replace("-", "_DASH_")
|
s.replace("?", "p").replace("-", "_")
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct LexicalContext<'a> {
|
pub struct LexicalContext<'a> {
|
||||||
|
@ -218,7 +218,7 @@ impl fmt::Display for Stmt {
|
|||||||
}
|
}
|
||||||
if let Some(block) = else_block {
|
if let Some(block) = else_block {
|
||||||
write!(f, "else")?;
|
write!(f, "else")?;
|
||||||
write_block(f, &block)?;
|
write_block(f, block)?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user