This commit is contained in:
2026-08-24 07:03:24 -06:00
parent 540a44e148
commit f2c5d2f3ee
10 changed files with 134 additions and 0 deletions
+23
View File
@@ -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
View File
Binary file not shown.
+31
View File
@@ -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)))
+4
View File
@@ -0,0 +1,4 @@
(define (factorial n)
(if (zero? n)
1
(* n (factorial (- n 1)))))