runtime
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import Development.Shake
|
||||
import Development.Shake.Command
|
||||
import Development.Shake.FilePath
|
||||
import Development.Shake.Util
|
||||
|
||||
main = shakeArgs shakeOptions $ do
|
||||
action $ do
|
||||
sourceFiles <- getDirectoryFiles "" ["//*.scm"]
|
||||
need $ (-<.> "cps") <$> sourceFiles
|
||||
alternatives $ do
|
||||
"*.cps" %> \out -> do
|
||||
let scm = out -<.> "scm"
|
||||
need [scm]
|
||||
Stdout cps0 <- cmd
|
||||
"csc -debug 3"
|
||||
[scm]
|
||||
Stdout cps1 <- cmd
|
||||
"sed -e" ["s/##core#lambda/κ/g;s/lambda/λ/g;/\\[cps\\]/d"] (Stdin cps0)
|
||||
writeFile' out $ ";; -*- mode:scheme -*-\n" ++ cps1
|
||||
|
||||
phony "clean" $ do
|
||||
removeFilesAfter ".shake" ["//*"]
|
||||
liftIO $ removeFiles "." ["*.cps"]
|
||||
Executable
BIN
Binary file not shown.
@@ -0,0 +1,31 @@
|
||||
;; -*- mode:scheme -*-
|
||||
(λ (k118)
|
||||
(let ((k119 (κ
|
||||
(r120)
|
||||
(let ((t11 r120))
|
||||
(let ((k122 (κ
|
||||
(r123)
|
||||
(let ((t12 r123))
|
||||
(let ((t125 (set! factorial
|
||||
#f
|
||||
(λ (k127 n10)
|
||||
(let ((k128 (κ (r129) (k127 r129))))
|
||||
(let ((k131 (κ
|
||||
(r132)
|
||||
(if r132
|
||||
(k128 1)
|
||||
(let ((k134 (κ (r135) (k128 r135))))
|
||||
(let ((k138 (κ
|
||||
(r139)
|
||||
(let ((a137 r139)) (scheme#* k134 n10 a137)))))
|
||||
(let ((k142 (κ
|
||||
(r143)
|
||||
(let ((a141 r143)) (factorial k138 a141)))))
|
||||
(scheme#- k142 n10 1))))))))
|
||||
(scheme#zero? k131 n10)))))))
|
||||
(let ((t13 t125))
|
||||
(let ((k145 (κ (r146) (k118 r146))))
|
||||
(let ((k148 (κ (r149) (r149 k145))))
|
||||
(chicken.base#implicit-exit-handler k148)))))))))
|
||||
(##core#callunit eval k122))))))
|
||||
(##core#callunit library k119)))
|
||||
@@ -0,0 +1,4 @@
|
||||
(define (factorial n)
|
||||
(if (zero? n)
|
||||
1
|
||||
(* n (factorial (- n 1)))))
|
||||
Reference in New Issue
Block a user