Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marc Coiffier
BHR
Commits
b7645d66
Commit
b7645d66
authored
Mar 29, 2019
by
Marc Coiffier
Browse files
Define a 'cons' builtin for CaPriCon (and other concatenative languages)
parent
c1df9304
Changes
2
Hide whitespace changes
Inline
Side-by-side
capricon/src/Algebra/Monad/Concatenative.hs
View file @
b7645d66
...
...
@@ -67,7 +67,7 @@ data StackBuiltin b = Builtin_ListBegin | Builtin_ListEnd
|
Builtin_Pop
|
Builtin_PopN
|
Builtin_Dup
|
Builtin_DupN
|
Builtin_Swap
|
Builtin_SwapN
|
Builtin_Range
|
Builtin_Each
|
Builtin_Range
|
Builtin_Each
|
Builtin_Cons
|
Builtin_Add
|
Builtin_Sub
|
Builtin_Mul
|
Builtin_Div
|
Builtin_Mod
|
Builtin_Sign
|
Builtin_DeRef
|
Builtin_Def
|
Builtin_Exec
...
...
@@ -175,6 +175,9 @@ execBuiltinImpl runExtra onComment = go
st
->
st
go
Builtin_Dup
=
stack
=~
\
st
->
case
st
of
x
:
t
->
x
:
x
:
t
;
_
->
st
go
Builtin_DupN
=
stack
=~
\
st
->
case
st
of
StackInt
n
:
t
|
x
:
_
<-
drop
n
t
->
x
:
t
;
_
->
st
go
Builtin_Cons
=
stack
=~
\
case
x
:
StackList
l
:
st'
->
StackList
(
x
:
l
)
:
st'
st
->
st
go
Builtin_Range
=
stack
=~
\
st
->
case
st
of
StackInt
n
:
t
->
StackList
[
StackInt
i
|
i
<-
[
0
..
n
-
1
]]
:
t
;
_
->
st
go
Builtin_Each
=
do
st
<-
get
...
...
capricon/src/CaPriCon/Run.hs
View file @
b7645d66
...
...
@@ -451,6 +451,7 @@ cocDict version getResource getBResource writeResource writeBResource =
(
"list/each"
,
Builtin_Each
),
(
"list/range"
,
Builtin_Range
),
(
"list/cons"
,
Builtin_Cons
),
(
"dict/vocabulary"
,
Builtin_CurrentDict
),
(
"dict/empty"
,
Builtin_Empty
),
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment