Last active
October 13, 2022 16:30
-
-
Save youz/73e7d5c8c570cfa7df25fef267e5c43a to your computer and use it in GitHub Desktop.
quine.grass
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
call grasspile quine-base.ml -P 1000000 >quine-base.grass | |
if ERRORLEVEL 1 ( | |
echo compile failed [exitcode=%ERRORLEVEL%] | |
exit /b 1 | |
) | |
ruby mkquine.rb >quine.grass | |
grass quine.grass >quine2.grass | |
if ERRORLEVEL 1 ( | |
echo execution failed [exitcode=%ERRORLEVEL%] | |
exit /b 1 | |
) | |
fc quine.grass quine2.grass | |
dir quine*.grass |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
src = File.open("quine-base.grass").read.chomp.sub(/^w[Ww]+v/, '') | |
enc = src.gsub(/./){|m| | |
case m | |
when 'w' | |
'Ww' | |
when 'W' | |
'Www' | |
when 'v' | |
'Wwww' | |
end | |
} | |
print("w#{enc}v#{src}") |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(* | |
# require grasspiler (https://www.npmjs.com/package/@susisu/grasspiler) | |
grasspile quine-base.ml -o quine-base.grass | |
ruby mkquine.rb > quine.grass | |
*) | |
let data x = Out Out (* placeholder for encoded source *) | |
(* church-num *) | |
let cn2 f x = f (f x) | |
let s32 c = | |
let s16 = cn2 cn2 cn2 Succ in | |
s16 (s16 c) | |
(* w,W,v *) | |
let decw sn = | |
let cn4 = cn2 cn2 in | |
let cn256 = cn4 cn4 in | |
let f c = | |
let s = sn c in | |
s w c s | |
in | |
cn256 f w | |
let W = decw s32 | |
let id x = x | |
let Succ = id Succ | |
let v = decw Succ | |
let w = Succ v (* ! *) | |
(* print *) | |
let o = id Out | |
let oo x = o (o x) | |
let outenc c = | |
let t = (o W) c o oo in | |
let w = o w in | |
let isw = w c in | |
isw isw t w | |
let false x y = y | |
let printcode e0 = | |
let acc = data e0 false in | |
let id = false acc in | |
let o = id o in | |
let w = o w in | |
let lst = acc (w w) in | |
let _ = lst outenc in | |
let _ = o v in | |
lst o | |
let tochar i j = (i j) w (i (Succ j) W v) | |
let fcons car cdr f = | |
let _ = cdr f in | |
f car | |
let cons x y b = b x (Succ y) | |
let false x y = y | |
let gennext e j acc = | |
let i = acc false in | |
let lst = acc (i i) in | |
let chr = tochar i j in | |
e (cons (fcons chr lst) i) | |
let encode self acc f = (* f | <encode> | false (\xy.y) *) | |
let recur = self self in | |
let a = f false in (* | acc of f | \y.y = id *) | |
let i = a false in (* | idx of f | false *) | |
let nextf = gennext recur i in | |
let b = i i in (* | true | id *) | |
let c = b b in (* | \x.true | id *) | |
let d = c false in (* | true | false *) | |
let x = d nextf c in (* | nextf | id *) | |
x acc (* | next | acc *) | |
let result = printcode (encode encode (cons false w)) | |
(* ok | |
let test1 _ = | |
let _ = Out w in | |
let _ = Out W in | |
Out v | |
-> wWv | |
*) | |
(* ok | |
let test2 _ = | |
let _ = outenc w in | |
let _ = outenc W in | |
outenc v | |
-> WwWwwWwww | |
*) | |
(* ok | |
let test3 _ = | |
let lst = fcons w (fcons W (fcons v false)) in | |
let _ = lst Out in | |
lst outenc | |
-> vWwWwwwWwwWw | |
*) | |
(* ok | |
let id x = x | |
let Succ = id Succ | |
let w = id w | |
let test5 _ = | |
let t c = Out (tochar c w) in | |
let _ = t w in | |
let _ = t (Succ w) in | |
let _ = t (Succ (Succ w)) in | |
t (Succ (Succ (Succ w))) | |
-> wWvv | |
*) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
wWwWwWwwWwwWwWwwWwWwWwWwWwWwWwWwwWwWwWwWwwWwWwWwWwwwWwWwWwwWwwWwWwwWwwWwwWwWwwwWwWwwWwwWwWwWwwWwWwWwWwwWwWwWwWwWwWwWwWwWwwWwWwWwWwWwwWwwWwWwwwWwWwwWwwWwwWwwWwWwwWwwWwwWwwWwWwWwWwWwwWwWwwWwWwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwwwWwwWwWwWwwwWwWwwwWwwWwWwWwWwWwWwWwWwWwWwwWwwWwwWwwWwWwwWwwWwWwwwWwWwWwwWwwWwWwwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwWwWwWwwWwwWwwWwwWwwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwwWwWwWwWwWwWwWwWwWwWwwWwwWwwWwwWwwWwWwwwWwwWwwWwwWwwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwwwWwWwwWwwWwWwwWwwWwwWwWwwwWwWwwWwwWwwWwWwWwWwWwWwWwWwWwWwwWwWwWwwWwWwWwWwWwWwwWwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwWwWwWwWwWwWwWwWwWwwWwWwWwWwWwWwWwwWwWwwWwWwWwWwWwwWwWwWwWwWwwwWwWwWwwwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwwWwWwWwWwwWwwWwwWwwWwWwwWwWwWwWwWwWwWwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwwWwWwwWwwWwwWwwWwwWwWwwWwWwWwWwWwWwWwWwWwWwWwwWwwWwwWwwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwWwWwWwWwwWwwWwwWwWwWwWwWwWwWwwwWwWwWwWwwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwWwWwwWwwWwWwwwWwWwWwWwwWwwWwWwwWwwWwWwWwWwWwwwWwWwWwwwWwWwWwWwwWwWwWwWwWwwWwWwwWwwWwwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwWwWwwWwWwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwwWwWwWwWwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwWwwwWwWwWwWwwWwwWwwWwWwWwWwwWwwWwWwWwWwWwWwWwwWwWwWwWwWwWwWwWwwWwwWwwWwwWwwWwwWwwWwWwWwWwwWwWwWwwWwwWwwWwWwWwWwwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwwWwWwWwWwWwwWwWwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwwwWwwWwWwwWwwWwwWwwWwwWwwWwWwWwWwWwwWwWwWwWwWwWwWwWwWwWwWwWwWwWwWwwWwwWwwWwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwwWwvwwWWwWwwwwwwwWwwwWwwwvwwWWwWWWwvwWWwwWwwwWwwwwwwwwWwwwwWWwvwWWWWwWWWWwwwwWwWwwwWwwwwwwwwwwwwvWwwvwvWwwwwwwwwwWWWWwWWwvwwWWwWwwwwWWWWWWWwwwWWWWWwWwwwwwwwwwwwWwwwwwwwwwWWWWWwvWWWWWwwwwwwwwwwwwvwWWwWWWwvwWWWwwwwwwwwwWwwWwwwwwWwwwwwWWWWWWWwwwwwwwwwWwwwwwwWwWwwwwWwwwwvwwvwWWWWWWWWWWWWWWWWwWwwwWWWWwWwwwwwwwwWwwwwwwwwwwwWwWWWWWwWwwwwwwwwwwWWWWWwwwwwwwwwwwwwwwwWWWwwwwwwvwwwWwwwWWWWWWWWWWWWWwwwWWwvwwwWWwWWwwwwvwwvwwwWwwwwWwWWWwWWWWWWWWWWWWWWWwwwWwwwwwwWWWWWWWWWWwWwwwwWWWWWWWWWWWWWwWwwwwwwwwWWWWWWWWWWWWwvwwwWWWwwwWWwwwwwwWwwwwwwwWWWWWWWwwwWwwWWWwwwWwWwwwwwwwwwwwwWwwwwWwwwWwwwwwwwwwwwwvWwWWWWWWwwwwWwwwwwwwwwwwwwwWWWwWWWWWWWWWWw |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
call grasspile quine-base.ml -o test.grass | |
if ERRORLEVEL 1 ( | |
exit /b 1 | |
) | |
grass -d test.grass |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment