Compare commits
1
Commits
main
..
1d584c7946
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d584c7946 |
+1
-9
@@ -8,12 +8,4 @@
|
|||||||
. ((eval
|
. ((eval
|
||||||
. (progn (defun apply-cabal-fmt-h ()
|
. (progn (defun apply-cabal-fmt-h ()
|
||||||
(haskell-mode-buffer-apply-command "cabal-fmt"))
|
(haskell-mode-buffer-apply-command "cabal-fmt"))
|
||||||
(add-hook 'before-save-hook #'apply-cabal-fmt-h nil t)))))
|
(add-hook 'before-save-hook #'apply-cabal-fmt-h nil t))))))
|
||||||
(scheme-mode
|
|
||||||
. ((eval . (dolist (s '(kappa κ prim))
|
|
||||||
(put s 'scheme-indent-function 1)))))
|
|
||||||
(nil
|
|
||||||
. ((eval
|
|
||||||
. (progn (defun display-ansi ()
|
|
||||||
(interactive)
|
|
||||||
(ansi-color-apply-on-region (point-min) (point-max))))))))
|
|
||||||
|
|||||||
@@ -1,3 +1 @@
|
|||||||
use flake
|
use flake
|
||||||
watch_file gyehoek.cabal cabal.project
|
|
||||||
PATH_add $(dirname $(cabal list-bin gyehoek))
|
|
||||||
|
|||||||
+1
-2
@@ -8,5 +8,4 @@ dist-newstyle
|
|||||||
*.tix
|
*.tix
|
||||||
.direnv
|
.direnv
|
||||||
result
|
result
|
||||||
play/
|
play/
|
||||||
trace.html
|
|
||||||
@@ -1,10 +1,5 @@
|
|||||||
packages: *.cabal
|
packages: *.cabal
|
||||||
tests: True
|
tests: True
|
||||||
-- required for doctest-parallel
|
|
||||||
write-ghc-environment-files: always
|
|
||||||
|
|
||||||
-- https://github.com/martijnbastiaan/doctest-parallel/pull/66
|
|
||||||
allow-older: Cabal:process
|
|
||||||
|
|
||||||
source-repository-package
|
source-repository-package
|
||||||
type: git
|
type: git
|
||||||
|
|||||||
@@ -132,34 +132,3 @@ multiple ~env-ref~ calls could probably be replaced with a primitive that loads
|
|||||||
$code)
|
$code)
|
||||||
1))))
|
1))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** example
|
|
||||||
|
|
||||||
#+begin_src scheme
|
|
||||||
(λ (n m ktail)
|
|
||||||
(letrec ((f (λ (x ktail-0) (+ x n ktail-0)))
|
|
||||||
(g (λ (y ktail-1) (+ y g ktail-1))))
|
|
||||||
(prim (cons f g) ktail)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src scheme
|
|
||||||
(λ (n m ktail)
|
|
||||||
(letrec ((f-code (λ (x ktail-0)
|
|
||||||
(prim (env-get 2)
|
|
||||||
(κ (n)
|
|
||||||
(+ x n ktail-0)))))
|
|
||||||
(g-code (λ (y ktail-1)
|
|
||||||
(prim (env-get 3)
|
|
||||||
(κ (m)
|
|
||||||
(+ y m ktail-1))))))
|
|
||||||
(letrec ((with-closure-code
|
|
||||||
(κ (f g)
|
|
||||||
(prim (get-env 0)
|
|
||||||
(κ (ktail)
|
|
||||||
(prim cons f g ktail))))))
|
|
||||||
(prim (make-shared-closure (with-closure-code)
|
|
||||||
ktail)
|
|
||||||
(κ (with-closure)
|
|
||||||
(prim (make-shared-closure (f-code g-code) n m)
|
|
||||||
with-closure))))))
|
|
||||||
#+end_src
|
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
#+title: on libraries
|
|
||||||
|
|
||||||
* libraries and the file system
|
|
||||||
|
|
||||||
R⁷RS leaves it unspecified how exactly libraries correspond to files:
|
|
||||||
|
|
||||||
#+begin_quote
|
|
||||||
Programs and libraries are typically stored in files, although in some implementations they can be entered interactively into a running Scheme system. Other paradigms are possible. Implementations which store libraries in files should document the mapping from the name of a library to its location in the file system.
|
|
||||||
#+end_quote
|
|
||||||
|
|
||||||
thus the implementation of ~define-library~ is open to much interpretation. we could possibly define libraries as first-class objects, or deal with them statically. the former case is appealing to me, as it could massively simplify interactive use.
|
|
||||||
|
|
||||||
* semantics of declaration order
|
|
||||||
|
|
||||||
mercifully, R⁷RS is similarly ambiguous when it comes to the significance of declaration order. the authors note explicitly example two equally acceptable approaches:
|
|
||||||
|
|
||||||
#+begin_quote
|
|
||||||
One possible implementation of libraries is as follows: _After all cond-expand library declarations are expanded, a new environment is constructed for the library consisting of all imported bindings._ The expressions from all begin, include and include-ci library declarations are expanded in that environment in the order in which they occur in the library. _Alternatively, cond-expand and import declarations may be processed in left to right order interspersed with the processing of other declarations_, with the environment growing as imported bindings are added to it by each import declaration.
|
|
||||||
#+end_quote
|
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
* rationale?
|
|
||||||
|
|
||||||
previously, the VM's stack was used for storing local variables across blocks; a Scheme procedure was split into several low-level routines (one for the procedure itself and one for each continuation), and the stack was used as a communication channel for these separate routines. in contrast, registers were local to each routine. this aligns with Wasm's model of functions pretty well, with Wasm /locals/ acting as the VM's /registers/, and a global mutable stack serving as fallback.
|
|
||||||
|
|
||||||
this worked quite well until it became time to implement ~call/cc~.
|
|
||||||
|
|
||||||
we are considering making the following alterations to the VM:
|
|
||||||
- explicitly segment the stack into frames.
|
|
||||||
- passing procedures and return addresses on the stack.
|
|
||||||
- new instructions:
|
|
||||||
+ ~(tail-call /n/)~
|
|
||||||
+ ~(call /n/)~
|
|
||||||
+ ~(load /r/ /n/)~
|
|
||||||
+ ~(return /n/)~
|
|
||||||
|
|
||||||
* scratchpad
|
|
||||||
|
|
||||||
#+begin_src scheme
|
|
||||||
(letrec ((fac (λ (n)
|
|
||||||
(if (zero? n)
|
|
||||||
1
|
|
||||||
(* n (fac (- n 1)))))))
|
|
||||||
(fac 3))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_src scheme
|
|
||||||
(λ (ktail0)
|
|
||||||
(letrec ((fac
|
|
||||||
(λ (n ktail1)
|
|
||||||
(zero?
|
|
||||||
n
|
|
||||||
(κ (x0)
|
|
||||||
(if x0
|
|
||||||
(continue ktail1 1)
|
|
||||||
(- n 1
|
|
||||||
(κ (x1)
|
|
||||||
(fac x1
|
|
||||||
(κ (x2)
|
|
||||||
(* n x2 ktail1)))))))))))
|
|
||||||
(fac 3)))
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
#+begin_example
|
|
||||||
n ktail1
|
|
||||||
| |
|
|
||||||
| | x0
|
|
||||||
| | |
|
|
||||||
| | ^
|
|
||||||
| |
|
|
||||||
| | x1
|
|
||||||
| | |
|
|
||||||
| | ^
|
|
||||||
| |
|
|
||||||
| | x2
|
|
||||||
| | |
|
|
||||||
^ ^ ^
|
|
||||||
#+end_example
|
|
||||||
|
|
||||||
#+begin_src scheme
|
|
||||||
(define $fac-c0
|
|
||||||
(pop! %x0 0) ; [ x0 $fac-c0 n $fac ktail1 ]
|
|
||||||
(if %x0 ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
;; every variable but `ktail1' is dead so we pop them all.
|
|
||||||
;; this probably means that `if' should take two continuations
|
|
||||||
;; rather than two blocks.
|
|
||||||
(then (push! 1) ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
(return 1)) ; [ 1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(else (load %n 1) ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
(prim %x1 (- %n 1)) ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
(push! $fac-c1) ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
(push! $fac) ; [ $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(push! %x1) ; [ $fac $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(call 1) ; [ x1 $fac $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
)))
|
|
||||||
|
|
||||||
(define $fac-c1
|
|
||||||
(pop! %x2) ; [ x2 $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(load %n 3) ; [ $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(prim %x3 (* %n %x2))
|
|
||||||
(push! %x3) ; [ $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
(return 1) ; [ x3 $fac-c1 $fac-c0 n $fac ktail1 ]
|
|
||||||
)
|
|
||||||
|
|
||||||
(define $fac
|
|
||||||
(load %ktail1 2) ; [ n $fac ktail1 ]
|
|
||||||
(load %n 0) ; [ n $fac ktail1 ]
|
|
||||||
(push! $fac-c0) ; [ n $fac ktail1 ]
|
|
||||||
(push! $zero?) ; [ $fac-c0 n $fac ktail1 ]
|
|
||||||
(push! %n) ; [ $zero? $fac-c0 n $fac ktail1 ]
|
|
||||||
(call 1) ; [ n $zero? $fac-c0 n $fac ktail1 ]
|
|
||||||
)
|
|
||||||
|
|
||||||
(define $start
|
|
||||||
(push! $fac) ; [ $start ktail0 ]
|
|
||||||
(push! 3) ; [ $fac $start ktail0 ]
|
|
||||||
(tail-call 1) ; [ 3 $fac $start ktail0 ]
|
|
||||||
;; ↑ `tail-call' knows how to dispose of the caller's stack frame.
|
|
||||||
)
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
@@ -20,13 +20,12 @@
|
|||||||
overlays = [
|
overlays = [
|
||||||
haskellNix.overlay
|
haskellNix.overlay
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
gyehoek-wasm-runtime = final.callPackage ./wasm-runtime {
|
gyehoek-runtime = final.callPackage ./runtime {
|
||||||
crane-lib = inputs.crane.mkLib final;
|
crane-lib = inputs.crane.mkLib final;
|
||||||
};
|
};
|
||||||
gyehoek = final.haskell-nix.project' {
|
gyehoek = final.haskell-nix.project' {
|
||||||
src = ./.;
|
src = ./.;
|
||||||
compiler-nix-name = "ghc912";
|
compiler-nix-name = "ghc912";
|
||||||
configureArgs = "-f-doctest";
|
|
||||||
modules = [({ pkgs, lib, ...}: {
|
modules = [({ pkgs, lib, ...}: {
|
||||||
packages.gyehoek.components.tests.test.preCheck =
|
packages.gyehoek.components.tests.test.preCheck =
|
||||||
let
|
let
|
||||||
@@ -34,16 +33,14 @@
|
|||||||
pkgs.git # tasty uses git diff
|
pkgs.git # tasty uses git diff
|
||||||
];
|
];
|
||||||
in ''
|
in ''
|
||||||
export GYEHOEK_WASM_RUNTIME=${
|
export GYEHOEK_RUNTIME=${lib.getExe final.gyehoek-runtime}
|
||||||
lib.getExe final.gyehoek-wasm-runtime
|
|
||||||
}
|
|
||||||
export PATH=${lib.makeBinPath bin}:$PATH
|
export PATH=${lib.makeBinPath bin}:$PATH
|
||||||
'';
|
'';
|
||||||
})];
|
})];
|
||||||
shell = {
|
shell = {
|
||||||
withHoogle = true;
|
withHoogle = true;
|
||||||
inputsFrom = [
|
inputsFrom = [
|
||||||
final.gyehoek-wasm-runtime
|
final.gyehoek-runtime
|
||||||
];
|
];
|
||||||
tools = {
|
tools = {
|
||||||
cabal = {};
|
cabal = {};
|
||||||
@@ -55,7 +52,7 @@
|
|||||||
nodejs
|
nodejs
|
||||||
wasm-tools
|
wasm-tools
|
||||||
wac-cli
|
wac-cli
|
||||||
gauche
|
guile
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
wasmtime
|
wasmtime
|
||||||
# bashInteractive is necessary to work around an
|
# bashInteractive is necessary to work around an
|
||||||
@@ -94,7 +91,7 @@
|
|||||||
hf.packages.${system} // lib.fix (packages: {
|
hf.packages.${system} // lib.fix (packages: {
|
||||||
gyehoek = hf.packages.${system}."gyehoek:exe:gyehoek";
|
gyehoek = hf.packages.${system}."gyehoek:exe:gyehoek";
|
||||||
default = packages.gyehoek;
|
default = packages.gyehoek;
|
||||||
inherit (pkgs) gyehoek-wasm-runtime;
|
inherit (pkgs) gyehoek-runtime;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
devShells = each-system
|
devShells = each-system
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
(begin 123 456) ; => 456
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > #t
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
(letrec ((iter (λ (n f)
|
|
||||||
(if (zero? n)
|
|
||||||
#f
|
|
||||||
(begin (f n)
|
|
||||||
(iter (- n 1) f))))))
|
|
||||||
(call/cc
|
|
||||||
(λ (k)
|
|
||||||
(iter 10 (λ (n)
|
|
||||||
;; i don't feel like implementing (= n 5) right now lmfao
|
|
||||||
(if (zero? (- n 5))
|
|
||||||
(k #t)
|
|
||||||
#f))))))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > #t
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
(call/cc
|
|
||||||
(λ (k)
|
|
||||||
(begin (k #t)
|
|
||||||
#f)))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > #t
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
;; confer ../callcc-early-exit-4
|
|
||||||
(letrec ((app (λ (f x)
|
|
||||||
(begin (f x)
|
|
||||||
#f))))
|
|
||||||
(call/cc (λ (k) (app k #t))))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > #t
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
;; confer ../callcc-early-exit-3
|
|
||||||
(letrec ((app (λ (f x)
|
|
||||||
(begin (f x)
|
|
||||||
#f))))
|
|
||||||
(call/cc (λ (k) (app (λ (x) (k x)) #t))))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > #t
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
(call/cc
|
|
||||||
(λ (k)
|
|
||||||
(begin ((λ () (k #t)))
|
|
||||||
#f)))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > 12
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
(* 2 (call/cc
|
|
||||||
(λ (k)
|
|
||||||
(begin (k 6)
|
|
||||||
3))))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > 456
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > 155
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
(letrec ((factorial (λ (n)
|
|
||||||
(if (zero? n)
|
|
||||||
1
|
|
||||||
(* n (factorial (- n 1)))))))
|
|
||||||
(letrec ((sum-of-factorials
|
|
||||||
(λ (n)
|
|
||||||
(if (zero? n)
|
|
||||||
0
|
|
||||||
(+ (factorial n) (sum-of-factorials (- n 1)))))))
|
|
||||||
(+ 2 (sum-of-factorials 5))))
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > (6 . 7)
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
(cons 6 7)
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > (456 . 123)
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
(let ((p (cons 123 456)))
|
|
||||||
(cons (cdr p) (car p)))
|
|
||||||
@@ -1,2 +1,2 @@
|
|||||||
ret > ExitSuccess
|
ret > ExitSuccess
|
||||||
out > 2432902008176640000
|
out > 720
|
||||||
|
|||||||
@@ -2,4 +2,4 @@
|
|||||||
(if (zero? n)
|
(if (zero? n)
|
||||||
1
|
1
|
||||||
(* n (fac (- n 1)))))))
|
(* n (fac (- n 1)))))))
|
||||||
(fac 20))
|
(fac 6))
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > 123
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
123
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
ret > ExitSuccess
|
|
||||||
out > (0 . (1 . (4 . (9 . (16 . ())))))
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
(letrec ((my-map (λ (f l)
|
|
||||||
(if (pair? l)
|
|
||||||
(cons (f (car l))
|
|
||||||
(my-map f (cdr l)))
|
|
||||||
(list)))))
|
|
||||||
(my-map (λ (x) (* x x))
|
|
||||||
(list 0 1 2 3 4)))
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[0;31m([0m[0;95;1;3mbegin[0m
|
|
||||||
책을
|
|
||||||
더
|
|
||||||
먹으세요~![0;31m)[0m
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[0;31m([0m[0;95;1;3mbegin[0m
|
|
||||||
책을
|
|
||||||
더
|
|
||||||
먹으세요~![0;31m)[0m
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
[0;31m([0m[0;95;1;3mlambda[0m
|
|
||||||
[0;33m([0m어간
|
|
||||||
어미[0;33m)[0m
|
|
||||||
[0;33m([0mdisplay
|
|
||||||
꾸깃[0;33m)[0m[0;31m)[0m
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
[0;31m([0m[0;95;1;3mlambda[0m [0;33m([0m어간 어미[0;33m)[0m
|
|
||||||
[0;33m([0mdisplay 꾸깃[0;33m)[0m[0;31m)[0m
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[0;31m([0m[0;31m)[0m
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[0;31m([0m[0;33m([0m[0;32m([0m[0;34m([0m[0;35m([0m[0;35m)[0m[0;34m)[0m[0;32m)[0m[0;33m)[0m[0;31m)[0m
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
[0;31m([0m가
|
|
||||||
나
|
|
||||||
다
|
|
||||||
라[0;31m)[0m
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
[0;31m([0m가 나 다 라[0;31m)[0m
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/bool/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF ( SimpleBoolean True )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/bool/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF ( SimpleBoolean True )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/bool/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 10
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF ( SimpleBoolean False )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/bool/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 13
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF ( SimpleBoolean False )
|
|
||||||
]
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#;(a datum comment can
|
|
||||||
span multiple lines)
|
|
||||||
|
|
||||||
(but it ends here)
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/decimal/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber 45.0 )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/decimal/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber 5667.0 )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/decimal/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 10
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber
|
|
||||||
( -123.0 )
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-dot-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( DotListF
|
|
||||||
(
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-dot-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 2
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "가" )
|
|
||||||
) :|
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-dot-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 5
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "나" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-dot-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 8
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "다" )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-dot-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 13
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "라" )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( ListF StyleData
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 2
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "가" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 5
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "나" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 8
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "다" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 11
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "라" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 14
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber 1.0 )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 16
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber 2.0 )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list-flat/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 18
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleNumber 3.0 )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( DotListF
|
|
||||||
(
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 2
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "a" )
|
|
||||||
) :|
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "b" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 6
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( ListF StyleData
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 7
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "c" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 9
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "d" )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 14
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( ListF StyleData
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 15
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "가" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 18
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( DotListF
|
|
||||||
(
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 19
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "나" )
|
|
||||||
) :| []
|
|
||||||
)
|
|
||||||
( MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 24
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "다" )
|
|
||||||
)
|
|
||||||
)
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/list/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 28
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "라" )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/meta-expression/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< MetaF "aHaskellVariable + abc * 2"
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#{aHaskellVariable + abc * 2}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
##{case 123 of { 123 -> blah
|
|
||||||
; xyz -> flah }}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/meta-splice-expression/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< MetaSpliceF "takeWhile (\x -> even x) aHaskellList"
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
##{takeWhile (\x -> even x) aHaskellList}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/meta-splice-variable/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< MetaSpliceF "aHaskellList"
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
##{aHaskellList}
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/meta-variable/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< MetaF "aHaskellVariable"
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
#{aHaskellVariable}
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "..." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 2
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol ".." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol ".abc" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 4
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "....abcc" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 5
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol ".++-" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-dot/source.scm"
|
|
||||||
, sourceLine = Pos 6
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol ".-" )
|
|
||||||
]
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
...
|
|
||||||
..
|
|
||||||
.abc
|
|
||||||
....abcc
|
|
||||||
.++-
|
|
||||||
.-
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "+" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 3
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "-" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "+." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "+.." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 8
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "-." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 11
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "-...abc" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/peculiar-identifier-sign/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 19
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "-abc.." )
|
|
||||||
]
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
+ -
|
|
||||||
|
|
||||||
+. +.. -. -...abc -abc..
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/string/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleString "가나다라" )
|
|
||||||
]
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier-token/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "abc" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier-token/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 4
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleString "xyz" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier-token/source.scm"
|
|
||||||
, sourceLine = Pos 2
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "수학" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier-token/source.scm"
|
|
||||||
, sourceLine = Pos 2
|
|
||||||
, sourceColumn = Pos 5
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< CompoundF
|
|
||||||
( ListF StyleData
|
|
||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier-token/source.scm"
|
|
||||||
, sourceLine = Pos 2
|
|
||||||
, sourceColumn = Pos 6
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "數學" )
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
abc"xyz"
|
|
||||||
수학(數學)
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
[ MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "abc" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 5
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "bala-hwa$" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 15
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "x!!!" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 20
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "z" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 22
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "z123" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 27
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "나는너무졸리다" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 1
|
|
||||||
, sourceColumn = Pos 42
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "學" )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 3
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "車室." )
|
|
||||||
, MkAnn
|
|
||||||
{ position = Just
|
|
||||||
( SourcePos
|
|
||||||
{ sourceName = "golden/read/typical-identifier/source.scm"
|
|
||||||
, sourceLine = Pos 5
|
|
||||||
, sourceColumn = Pos 1
|
|
||||||
}
|
|
||||||
)
|
|
||||||
} :< SimpleF
|
|
||||||
( SimpleSymbol "三個女人一臺戲。" )
|
|
||||||
]
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
abc bala-hwa$ x!!! z z123 나는너무졸리다 學
|
|
||||||
|
|
||||||
車室.
|
|
||||||
|
|
||||||
三個女人一臺戲。
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[ Fix
|
||||||
|
( SimpleF ( Boolean True ) )
|
||||||
|
, Fix
|
||||||
|
( SimpleF ( Boolean True ) )
|
||||||
|
, Fix
|
||||||
|
( SimpleF ( Boolean False ) )
|
||||||
|
, Fix
|
||||||
|
( SimpleF ( Boolean False ) )
|
||||||
|
]
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number 45.0 )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number 5667.0 )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number
|
||||||
|
( -123.0 )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
[ Fix
|
||||||
|
( CompoundF
|
||||||
|
( DotListF
|
||||||
|
( Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "가" )
|
||||||
|
) :|
|
||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "나" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "다" )
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
( Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "라" )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
[ Fix
|
||||||
|
( CompoundF
|
||||||
|
( ListF
|
||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "가" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "나" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "다" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "라" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number 1.0 )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number 2.0 )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Number 3.0 )
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
[ Fix
|
||||||
|
( CompoundF
|
||||||
|
( DotListF
|
||||||
|
( Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "a" )
|
||||||
|
) :|
|
||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "b" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( CompoundF
|
||||||
|
( ListF
|
||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "c" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "d" )
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
( Fix
|
||||||
|
( CompoundF
|
||||||
|
( ListF
|
||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "가" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( CompoundF
|
||||||
|
( DotListF
|
||||||
|
( Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "나" )
|
||||||
|
) :| []
|
||||||
|
)
|
||||||
|
( Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "다" )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "라" )
|
||||||
|
)
|
||||||
|
]
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "+" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "-" )
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
+ -
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( String "가나다라" )
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
[ Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "abc" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "balahwa$" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "x!!!" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "z" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "z123" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "나는너무졸리다" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "學" )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "車室." )
|
||||||
|
)
|
||||||
|
, Fix
|
||||||
|
( SimpleF
|
||||||
|
( Symbol "三個女人一臺戲。" )
|
||||||
|
)
|
||||||
|
]
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
abc balahwa$ x!!! z z123 나는너무졸리다 學
|
||||||
|
|
||||||
|
車室.
|
||||||
|
|
||||||
|
三個女人一臺戲。
|
||||||
+11
-45
@@ -13,11 +13,6 @@ build-type: Simple
|
|||||||
-- extra-doc-files: CHANGELOG.md
|
-- extra-doc-files: CHANGELOG.md
|
||||||
-- extra-source-files:
|
-- extra-source-files:
|
||||||
|
|
||||||
flag doctest
|
|
||||||
description: enable the doctest suite
|
|
||||||
default: True
|
|
||||||
manual: True
|
|
||||||
|
|
||||||
common ghcstuffs-dev
|
common ghcstuffs-dev
|
||||||
ghc-options:
|
ghc-options:
|
||||||
-Wno-unused-matches -Wno-missing-signatures -Wno-typed-holes
|
-Wno-unused-matches -Wno-missing-signatures -Wno-typed-holes
|
||||||
@@ -26,7 +21,6 @@ common ghcstuffs
|
|||||||
ghc-options:
|
ghc-options:
|
||||||
-Wall -fdefer-type-errors -fno-show-valid-hole-fits
|
-Wall -fdefer-type-errors -fno-show-valid-hole-fits
|
||||||
-fdefer-out-of-scope-variables -threaded
|
-fdefer-out-of-scope-variables -threaded
|
||||||
-Wno-name-shadowing -Wno-partial-type-signatures
|
|
||||||
|
|
||||||
default-extensions:
|
default-extensions:
|
||||||
BlockArguments
|
BlockArguments
|
||||||
@@ -55,37 +49,32 @@ executable gyehoek
|
|||||||
library
|
library
|
||||||
import: ghcstuffs, ghcstuffs-dev
|
import: ghcstuffs, ghcstuffs-dev
|
||||||
ghc-options: -fplugin=Effectful.Plugin
|
ghc-options: -fplugin=Effectful.Plugin
|
||||||
-- build-tool-depends: retrie:retrie
|
|
||||||
|
|
||||||
-- cabal-fmt: expand src
|
-- cabal-fmt: expand src
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
Gyehoek.CPS.Close
|
Gyehoek.CPS.Close
|
||||||
Gyehoek.CPS.Convert
|
Gyehoek.CPS.Convert
|
||||||
Gyehoek.CPS.Eval
|
Gyehoek.CPS.Eval
|
||||||
Gyehoek.CPS.Hoist
|
Gyehoek.CPS.Lower
|
||||||
|
Gyehoek.CPS.Stackify
|
||||||
Gyehoek.CPS.Syntax
|
Gyehoek.CPS.Syntax
|
||||||
Gyehoek.Driver
|
Gyehoek.Driver
|
||||||
Gyehoek.GenSym
|
Gyehoek.GenSym
|
||||||
Gyehoek.Jalmot
|
|
||||||
Gyehoek.Language
|
Gyehoek.Language
|
||||||
Gyehoek.Language.Common
|
|
||||||
Gyehoek.Lift1
|
|
||||||
Gyehoek.Options
|
Gyehoek.Options
|
||||||
Gyehoek.Prelude
|
Gyehoek.Prelude
|
||||||
Gyehoek.Scheme.Expand
|
|
||||||
Gyehoek.Scheme.Expand.Old
|
|
||||||
Gyehoek.Scheme.Syntax
|
Gyehoek.Scheme.Syntax
|
||||||
Gyehoek.Sexp
|
Gyehoek.Sexp
|
||||||
Gyehoek.Sexp.Grammar
|
Gyehoek.Sexp.Grammar
|
||||||
Gyehoek.Sexp.Grammar.Base
|
|
||||||
Gyehoek.Sexp.Print
|
Gyehoek.Sexp.Print
|
||||||
Gyehoek.Sexp.QQ
|
|
||||||
Gyehoek.Sexp.Read
|
Gyehoek.Sexp.Read
|
||||||
Gyehoek.Sexp.Syntax
|
Gyehoek.Sexp.Syntax
|
||||||
|
Gyehoek.Stack.Syntax
|
||||||
|
Gyehoek.Stack.VM
|
||||||
Gyehoek.Wasm
|
Gyehoek.Wasm
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
, base ^>=4.21.2.0
|
, base ^>=4.21.2.0
|
||||||
, binary
|
, binary
|
||||||
, bytestring
|
, bytestring
|
||||||
, comonad
|
, comonad
|
||||||
@@ -102,29 +91,23 @@ library
|
|||||||
, hashable
|
, hashable
|
||||||
, invertible-grammar
|
, invertible-grammar
|
||||||
, lens
|
, lens
|
||||||
, lucid
|
|
||||||
, megaparsec
|
, megaparsec
|
||||||
, mtl
|
, mtl
|
||||||
, optparse-applicative
|
, optparse-applicative
|
||||||
, ordered-containers
|
, ordered-containers
|
||||||
, pretty-simple
|
, pretty-simple
|
||||||
, prettyprinter
|
, prettyprinter
|
||||||
, prettyprinter-ansi-terminal
|
|
||||||
, prettyprinter-lucid
|
|
||||||
, process
|
, process
|
||||||
, recursion-schemes
|
, recursion-schemes
|
||||||
, scientific
|
, scientific
|
||||||
, semialign
|
, sexp-grammar
|
||||||
, string-interpolate
|
, string-interpolate
|
||||||
, tardis
|
|
||||||
, template-haskell
|
, template-haskell
|
||||||
, text
|
, text
|
||||||
, text-short
|
, text-short
|
||||||
, these
|
|
||||||
, typed-process
|
, typed-process
|
||||||
, unordered-containers
|
, unordered-containers
|
||||||
, vector
|
, vector
|
||||||
, witherable
|
|
||||||
|
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: GHC2024
|
default-language: GHC2024
|
||||||
@@ -139,12 +122,12 @@ test-suite test
|
|||||||
-- cabal-fmt: expand test -Main
|
-- cabal-fmt: expand test -Main
|
||||||
other-modules:
|
other-modules:
|
||||||
Gyehoek.Test.CPS.Eval
|
Gyehoek.Test.CPS.Eval
|
||||||
|
Gyehoek.Test.CPS.Stackify
|
||||||
Gyehoek.Test.CPS.Syntax
|
Gyehoek.Test.CPS.Syntax
|
||||||
|
Gyehoek.Test.Golden
|
||||||
Gyehoek.Test.Scheme.Syntax
|
Gyehoek.Test.Scheme.Syntax
|
||||||
Gyehoek.Test.Sexp.Print
|
Gyehoek.Test.Sexp
|
||||||
Gyehoek.Test.Sexp.QQ
|
Gyehoek.Test.Stack.VM
|
||||||
Gyehoek.Test.Sexp.Read
|
|
||||||
Gyehoek.TestUtil
|
|
||||||
Root
|
Root
|
||||||
|
|
||||||
build-depends:
|
build-depends:
|
||||||
@@ -158,6 +141,7 @@ test-suite test
|
|||||||
, lens
|
, lens
|
||||||
, pretty-simple
|
, pretty-simple
|
||||||
, process-extras
|
, process-extras
|
||||||
|
, sexp-grammar
|
||||||
, tasty
|
, tasty
|
||||||
, tasty-expected-failure
|
, tasty-expected-failure
|
||||||
, tasty-hunit
|
, tasty-hunit
|
||||||
@@ -165,21 +149,3 @@ test-suite test
|
|||||||
, text
|
, text
|
||||||
|
|
||||||
default-language: GHC2024
|
default-language: GHC2024
|
||||||
|
|
||||||
-- https://github.com/martijnbastiaan/doctest-parallel/pull/66
|
|
||||||
test-suite doctest
|
|
||||||
import: ghcstuffs, ghcstuffs-dev
|
|
||||||
type: exitcode-stdio-1.0
|
|
||||||
hs-source-dirs: test
|
|
||||||
build-depends:
|
|
||||||
, base
|
|
||||||
, gyehoek
|
|
||||||
|
|
||||||
default-extensions: CPP
|
|
||||||
main-is: doctest.hs
|
|
||||||
|
|
||||||
if flag(doctest)
|
|
||||||
build-depends: doctest-parallel >=0.1
|
|
||||||
|
|
||||||
else
|
|
||||||
cpp-options: -DGYEHOEK_NO_DOCTEST
|
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
(define-syntax if-not
|
|
||||||
(syntax-rules ()
|
|
||||||
((_ c t f) (if (not c) t f))
|
|
||||||
((_ c t) (if (not c) t))))
|
|
||||||
|
|
||||||
(write (macroexpand-1 '(if-not #t 123 456)))
|
|
||||||
|
|
||||||
(define (main)
|
|
||||||
(let loop ((datum (read)))
|
|
||||||
(unless (eof-object? datum)
|
|
||||||
())))
|
|
||||||
+1
-1
@@ -663,7 +663,7 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gyehoek-wasm-runtime"
|
name = "gyehoek-runtime"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "gyehoek-wasm-runtime"
|
name = "gyehoek-runtime"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
@@ -4,10 +4,10 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
crane-lib.buildPackage (lib.fix (finalAttrs: {
|
crane-lib.buildPackage (lib.fix (finalAttrs: {
|
||||||
pname = "gyehoek-wasm-runtime";
|
pname = "gyehoek-runtime";
|
||||||
version = "0.1.0";
|
version = "0.1.0";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
# cargoLock = ./Cargo.lock;
|
# cargoLock = ./Cargo.lock;
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
meta.mainProgram = "gyehoek-wasm-runtime";
|
meta.mainProgram = "gyehoek-runtime";
|
||||||
}))
|
}))
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user