{"id":330658,"date":"2022-03-15T09:00:55","date_gmt":"2022-03-15T09:00:55","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=330658"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=330658","title":{"rendered":"<span>\u041b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432 397 \u0431\u0430\u0439\u0442\u0430\u0445<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oj\/5q\/5o\/oj5q5oxzwrg1wm5l5-c9mpisx3i.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oj\/5q\/5o\/oj5q5oxzwrg1wm5l5-c9mpisx3i.png\"\/><\/div>\n<p>  \u041b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c. \u042d\u0442\u043e \u0430\u0441\u0444\u0430\u043b\u044c\u0442\u043e\u0432\u0430\u044f \u0442\u043e\u043f\u044c \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u0443\u0447\u043d\u044b\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0439 397-\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 Linux ELF \u0434\u043b\u044f x86-64. \u0422\u0430\u043a\u0436\u0435 \u0432 \u043d\u0451\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 C \u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b <a href=\"https:\/\/justine.lol\/ape.html\" rel=\"nofollow noopener noreferrer\">APE<\/a> \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.<br \/>  <a name=\"habracut\"><\/a><br \/>  SectorLambda \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u0427\u0451\u0440\u0447\u0430-\u041a\u0440\u0438\u0432\u0438\u043d\u0430-\u0422\u0440\u043e\u043c\u043f\u0430 \u0441 \u043c\u043e\u043d\u0430\u0434\u043d\u044b\u043c \u0432\u0432\u043e\u0434\u043e\u043c-\u0432\u044b\u0432\u043e\u0434\u043e\u043c. \u0412 397 \u0431\u0430\u0439\u0442\u0430\u0445 \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u0443\u0441\u043e\u0440\u0430, \u00ab\u043b\u0435\u043d\u0438\u0432\u044b\u0435\u00bb \u0441\u043f\u0438\u0441\u043a\u0438 \u0438 \u0445\u0432\u043e\u0441\u0442\u043e\u0432\u0443\u044e \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u044e. \u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0441\u0430\u043c\u044b\u0439 \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0438\u0442 \u0438\u0437 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0431\u0430\u0439\u0442\u0430 stdin. \u0412\u044b\u0432\u043e\u0434 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u0430\u0439\u0442\u043e\u0432 0 \u0438 1. \u041e\u043d 64-\u0431\u0438\u0442\u043d\u044b\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043e [0,255], \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u0434\u043d\u0430\u043a\u043e \u0438\u043c\u0435\u0435\u0442\u0441\u044f 520-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430, \u043e\u0431\u0445\u043e\u0434\u044f\u0449\u0430\u044f \u043c\u043d\u043e\u0433\u0438\u0435 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f; \u0432\u043f\u0440\u043e\u0447\u0435\u043c, \u0432 \u043d\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>  <code>-rwxr-xr-x 1 jart jart 397 Feb 27 12:15<\/code> <a href=\"http:\/\/blc?v=2\" rel=\"nofollow noopener noreferrer\">blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 17K Feb 27 12:15<\/code> <a href=\"http:\/\/blc.S?v=3\" rel=\"nofollow noopener noreferrer\">blc.S<\/a><\/p>\n<p>  \u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u0430\u0448\u0438\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 Linux \u0434\u043b\u044f Linux x64 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <code>cc -c -o blc.o<\/code> <a href=\"http:\/\/blc.S?v=3\" rel=\"nofollow noopener noreferrer\">blc.S<\/a><br \/>  <code>ld.bfd -o blc blc.o -T<\/code> <a href=\"http:\/\/flat.lds?v=3\" rel=\"nofollow noopener noreferrer\">flat.lds<\/a><\/p>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0437 stdin, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0435\u0433\u043e \u0432\u0432\u043e\u0434. \u0412\u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0442\u0443\u0442\u043e\u0440\u0438\u0430\u043b \u043f\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u03bb 0), \u0432 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438 \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c\u043e\u0439 \u043a\u0430\u043a (00 10):<\/p>\n<pre><code class=\"cpp\">$ { printf 0010; printf 0101; } | .\/blc; echo 0101<\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\u0441\u044c Mac, Windows, FreeBSD, NetBSD \u0438\u043b\u0438 OpenBSD, \u0442\u043e \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<pre><code class=\"cpp\">$ curl https:\/\/justine.lol\/lambda\/lambda.com >lambda.com $ chmod +x lambda.com $ { printf 0010; printf 0101; } | .\/lambda.com; echo 0101<\/code><\/pre>\n<p>  <\/p>\n<h2>\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e<\/h2>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u043c \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0438, \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043c\u0430\u043b\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u0435\u0442\u0430\u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e 232 \u0431\u0438\u0442\u0430. \u0415\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 8-\u0431\u0438\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u0430 (Blc \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b), \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0435\u0439 \u0438\u0441\u0442\u0438\u043d\u043d\u044b\u0439 binary wire format, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e \u0442\u043e\u043c, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430.<\/p>\n<pre><code class=\"cpp\">$ curl https:\/\/justine.lol\/lambda\/uni.Blc >uni.Blc $ curl https:\/\/justine.lol\/lambda\/Blc >Blc $ chmod +x Blc $ { cat uni.Blc; printf ' '; printf 'hello world'; } | .\/Blc; echo hello world $ ls -hal uni.Blc -rw-r--r-- 1 jart jart 43 Feb 17 21:24 uni.Blc<\/code><\/pre>\n<p>  \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 521-\u0431\u0430\u0439\u0442\u043d\u0430\u044f \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u0432\u0441\u0435\u0433\u043e \u0432 43 \u0431\u0430\u0439\u0442\u0430\u0445, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u043d\u044c\u0448\u0435 \u0447\u0435\u043c \u043e\u0434\u043d\u043e\u0439 \u0434\u0435\u0441\u044f\u0442\u043e\u0439 \u043e\u0442 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430! \u0422\u0430\u043a\u0436\u0435 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043e\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 JVM, \u0445\u043e\u0442\u044f \u0438 \u043c\u0435\u043d\u044c\u0448\u0435 \u043d\u0435\u0451 \u043d\u0430 \u0448\u0435\u0441\u0442\u044c \u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432 \u0432\u0435\u043b\u0438\u0447\u0438\u043d. \u0427\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0430\u0445 \u0441\u0436\u0430\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u0435\u043d \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 busy beaver, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0431\u044a\u0451\u043c\u044b \u0434\u0430\u043d\u043d\u044b\u0445. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0440\u0443\u0442\u043e.<\/p>\n<p>  \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0432\u044b \u0441\u043e\u0431\u0440\u0430\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0436\u0430\u0442\u0438\u044f, \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u043a\u0430\u043a \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0449\u0435\u0435 \u0435\u0433\u043e \u043b\u044f\u043c\u0431\u0434\u0430-\u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u0422\u0430\u043a \u043a\u0430\u043a \u0441\u043b\u043e\u0436\u043d\u043e \u0432\u043d\u0435\u0434\u0440\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0441\u0436\u0430\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0443 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043b\u044e\u0434\u0435\u0439, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0441\u0436\u0430\u0442\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u044d\u0442\u0438\u043c 397-\u0431\u0430\u0439\u0442\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c, \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u0441\u0430\u043c\u043e\u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u0430\u0440\u0445\u0438\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u0436\u0434\u044b\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0435 \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0438\u043a\u0440\u043e\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430, \u0447\u0435\u043c LISP.<\/p>\n<h2>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f<\/h2>\n<p>  \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043a\u043e\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435:<\/p>\n<pre> 00      means abstraction   (pops in the Krivine machine) 01      means application   (push argument continuations) 1...0   means variable      (with varint de Bruijn index)<\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0448\u0435\u043b\u043b-\u0441\u043a\u0440\u0438\u043f\u0442\u044b sed \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u0431\u0430\u0439\u0442-\u043a\u043e\u0434\u0430. \u0415\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c <code>s\/\u03bb\/00\/g<\/code>, <code>s\/\\[\/01\/g<\/code>, <code>s\/[^01]\/\/g<\/code> \u0438 \u0442. \u0434.<\/p>\n<pre> #!\/bin\/sh&lt;\/span> tr \\\\n n |   sed '       s\/;.*\/\/       s\/#.*\/\/       s\/1\/\u22a4\/g       s\/0\/\u22a5\/g       s\/\u03bb\/00\/g       s\/\\[\/01\/g       s\/9\/11111111110\/g       s\/8\/1111111110\/g       s\/7\/111111110\/g       s\/6\/11111110\/g       s\/5\/1111110\/g       s\/4\/111110\/g       s\/3\/11110\/g       s\/2\/1110\/g       s\/\u22a4\/110\/g       s\/\u22a5\/10\/g       s\/[^01]\/\/g     '<\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<pre>{ printf %s \"(\u03bb 0)\" | .\/compile.sh   printf 00010101 } | .\/blc<\/pre>\n<h2>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>exit(0)<\/code>, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>$nil<\/code> \u0438\u043b\u0438 <code>[]<\/code>:<\/p>\n<pre> \u03bb \u03bb\u03bb0<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>[\u22a5,\u22a4]<\/code> \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 <code>10<\/code>.<\/p>\n<pre>\u03bb [[$pair $false] [[$pair $true] $nil]]<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>if (1 - 1 == 0) putc('1') else putc('0')<\/code>:<\/p>\n<pre>\u03bb [[[$if [$iszero [[$sub $one] $one]]]       [[$pair $false] $nil]]    [[$pair $true] $nil]]<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 ident, \u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e. \u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0434\u0432\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, <code>gro<\/code> \u0438 <code>put<\/code> (\u0438\u043b\u0438 <code>\u03bb [[0 wr0] wr1]<\/code>). \u0418\u043d\u0434\u0435\u043a\u0441 110 \u2014 \u044d\u0442\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0430 10 \u2014 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430 <code>for (;;) putc(getc())<\/code><\/p>\n<pre>\u03bb\u03bb [1 0] \u2502\u2502 \u2502\u2514binds `put` or `(\u03bb 0 wr0 wr1)` [cited as 0] \u2514binds `gro` or `\u22ef` [cited as 1]<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u0431\u0438\u0442\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 Y-\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u0430. \u0415\u0451 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0436 \u0446\u0435\u043b\u044b\u0445 16 \u043a\u0411\/\u0441.<\/p>\n<pre># a.k.a. Y(\u03bbfi.i(\u03bbbjn.\u276c\u00acb,fj\u276d)\u22a5) [$Y \u03bb\u03bb [[[$if 0] \u03bb\u03bb\u03bb [[$pair [$not 2]] [4 1]]] $nil]]     \u2502\u2502           \u2502\u2502\u2502     \u2502\u2502           \u2502\u2502\u2514consumes $nil terminator [uncited]     \u2502\u2502           \u2502\u2514binds ? input bit [cited as 1]     \u2502\u2502           \u2514binds (\u03bb 0 ? \u22ef) [cited as 2]     \u2502\u2514binds gro (\u03bb 0 ? \u22ef) [cited by first 0]     \u2514binds recursive function [cited as 4]<\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e, \u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440\u043e\u043c <a href=\"http:\/\/lambda.com\" rel=\"nofollow noopener noreferrer\">lambda.com<\/a> \u0441 \u0444\u043b\u0430\u0433\u043e\u043c <code>-r<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u043e\u0442 \u0432\u044b\u0448\u0435\u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441 \u043f\u0443\u0441\u0442\u044b\u043c \u0432\u0432\u043e\u0434\u043e\u043c. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c, \u043a\u0430\u043a \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0440\u0430\u0437\u043d\u044b\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 Y-\u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u0430. \u0417\u0430\u0442\u0435\u043c \u043e\u043d \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043a\u0438\u0439 \u0432\u0432\u043e\u0434, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0431\u0438\u0442 \u0432\u0432\u043e\u0434\u0430 \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442 \u0432 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0435 if. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 LISP, \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0433\u043e\u043b\u043e\u0432\u043d\u0443\u044e \u0440\u0435\u0434\u0443\u043a\u0446\u0438\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u043b\u043e\u043a \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u043b\u0435\u043d\u0438\u0432\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u0435\u0442 \u043f\u043e\u0442\u043e\u043a \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0439. \u0418\u043c\u0435\u043d\u043d\u043e \u0438\u0437-\u0437\u0430 \u0432\u0441\u0435\u0439 \u044d\u0442\u043e\u0439 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b \u0432 \u044f\u0437\u044b\u043a\u0430\u0445 \u043d\u0430\u043f\u043e\u0434\u043e\u0431\u0438\u0435 Haskell \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0442\u0430\u043a \u043c\u043d\u043e\u0433\u043e \u0441\u043a\u043e\u0431\u043e\u043a.<\/p>\n<pre>$ nil=\"\u03bb\u03bb 0\" $ true=\"\u03bb\u03bb 1\" $ false=\"\u03bb\u03bb 0\" $ pair=\"\u03bb\u03bb\u03bb [[0 2] 1]\" $ not=\"\u03bb [[0 $false] $true]\" $ Y=\"\u03bb [\u03bb [1 [0 0]] \u03bb [1 [0 0]]]\" $ printf %s \"[$Y \u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[$pair [$not 2]] [4 1]]] $nil]]\" | .\/compile.sh | .\/lambda.com -r [Y \u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]]] \u22a5]] \u03bb [0 put] [[Y \u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]]] \u22a5]] \u22ef] 0 put Y \u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]]] \u22a5] \u22ef put \u03bb [1 [0 0]] \u03bb [1 [0 0]] \u22ef put 1 [0 0] \u22ef put \u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]]] \u22a5] [0 0] \u22ef put \u03bb [[0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]]] \u22a5] \u22ef put 0 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]] \u22a5 put \u22ef \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]] \u22a5 put \u22a5 \u03bb\u03bb\u03bb [[pair [\u00ac 2]] [4 1]] \u22a5 put \u03bb 0 \u22a5 put 0 put \u22a5 put \u03bb 0<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>for x in reversed(stdin): put(x)<\/code><\/p>\n<pre># a.k.a. \u03bba.a(\u03c9(\u03bbbcde.d(bb)(\u03bbf.fce)))\u22a5 \u03bb [[0 [\u03bb [0 0] \u03bb\u03bb\u03bb\u03bb [[1 [3 3]] \u03bb [[0 3] 1]]]] $nil]<\/pre>\n<p>  \u042d\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <code>['1'] * 4**3<\/code>. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u043e\u0437\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0442\u0435\u043f\u0435\u043d\u044c \u0431\u041e\u043b\u044c\u0448\u0438\u0435 \u0447\u0438\u0441\u043b\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 9**3 (\u043f\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c \u0424\u041f \u044d\u0442\u043e big data), \u0442\u043e\u0433\u0434\u0430 \u0432\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 STACK \u0432 blc.S \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0447\u0435\u0433\u043e-\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e, \u0447\u0435\u043c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<pre>\u03bb [[$Y \u03bb\u03bb [[[$if [$iszero 0]]                 $nil]              [[$pair $false]               [1 [$dec 0]]]]]    [[$pow $four] $three]]<\/pre>\n<p>  \u0412\u043e\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 BLC \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0442\u043e\u0440 BLC \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 232 \u0431\u0438\u0442\u0430.<\/p>\n<pre>[[\u03bb [0 0]   \u03bb\u03bb\u03bb [[[0 \u03bb\u03bb\u03bb\u03bb [2 \u03bb [[4 [2 \u03bb [[1 [2 \u03bb\u03bb [2 \u03bb [[0 1] 2]]]]                                [3 \u03bb [3 \u03bb [[2 0] [1 0]]]]]]]                       [[0 [1 \u03bb [0 1]]]                        \u03bb [[3 \u03bb [3 \u03bb [1 [0 3]]]] 4]]]]]         [2 2]] 1]]  \u03bb [0 [\u03bb [0 0] \u03bb [0 0]]]]<\/pre>\n<p>  \u0412\u043e\u0442 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043a\u0440\u0438\u0432\u043e\u0439 \u041f\u0435\u0430\u043d\u043e \u0433\u0438\u043b\u044c\u0431\u0435\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c 8-\u0431\u0438\u0442\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438:<\/p>\n<pre>$ curl https:\/\/justine.lol\/lambda\/hilbert.Blc >hilbert.Blc $ curl https:\/\/justine.lol\/lambda\/Blc >Blc $ chmod +x Blc $ { cat hilbert.Blc; printf 123; } | .\/Blc  _   _   _   _ | |_| | | |_| | |_   _| |_   _|  _| |_____| |_ |  ___   ___  | |_|  _| |_  |_|  _  |_   _|  _ | |___| |___| |<\/pre>\n<p>  <\/p>\n<h2>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre>nil=\"\u03bb\u03bb0\" false=\"\u03bb\u03bb0\" true=\"\u03bb\u03bb1\"<\/pre>\n<p>  \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438:<\/p>\n<pre>if=\"\u03bb 0\" omega=\"\u03bb [0 0]\" pair=\"\u03bb\u03bb\u03bb [[0 2] 1]\" car=\"\u03bb [0 $true]\" cdr=\"\u03bb [0 $false]\" or=\"\u03bb\u03bb [[0 0] 1]\" and=\"\u03bb\u03bb [[0 1] 0]\" not=\"\u03bb\u03bb\u03bb [[2 0] 1]\" xor=\"\u03bb\u03bb [[1 \u03bb\u03bb [[2 0] 1]] 0]\" bitxor=\"\u03bb\u03bb [[1 0] \u03bb\u03bb [[2 0] 1]]\" iszero=\"\u03bb\u03bb\u03bb [[2 \u03bb 1] 1]\" Y=\"\u03bb [\u03bb [0 0] \u03bb [1 [0 0]]]\"<\/pre>\n<p>  \u0412\u043e\u0442 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f:<\/p>\n<pre>zero=\"\u03bb\u03bb 0\" one=\"\u03bb\u03bb [1 0]\" two=\"\u03bb\u03bb [1 [1 0]]\" three=\"\u03bb\u03bb [1 [1 [1 0]]]\" four=\"\u03bb\u03bb [1 [1 [1 [1 0]]]]\" five=\"\u03bb\u03bb [1 [1 [1 [1 [1 0]]]]]\" six=\"\u03bb\u03bb [1 [1 [1 [1 [1 [1 0]]]]]]\" seven=\"\u03bb\u03bb [1 [1 [1 [1 [1 [1 [1 0]]]]]]]\" eight=\"\u03bb\u03bb [1 [1 [1 [1 [1 [1 [1 [1 0]]]]]]]]\" nine=\"\u03bb\u03bb [1 [1 [1 [1 [1 [1 [1 [1 [1 0]]]]]]]]]\"<\/pre>\n<p>  \u0412\u043e\u0442 \u0430\u0440\u0438\u0444\u043c\u0435\u0442\u0438\u043a\u0430:<\/p>\n<pre>pow=\"\u03bb\u03bb [0 1]\" mul=\"\u03bb\u03bb\u03bb [2 [1 0]]\" dec=\"\u03bb\u03bb\u03bb [[[2 \u03bb\u03bb [0 [1 3]]] \u03bb 1] \u03bb 0]\" sub=\"\u03bb\u03bb [[0 $dec] 1]\" inc=\"\u03bb\u03bb\u03bb [1 [[2 1] 0]]\" add=\"\u03bb\u03bb\u03bb\u03bb [[3 1] [[2 1] 0]]\" fac=\"\u03bb\u03bb [[[1 \u03bb\u03bb [0 [1 \u03bb\u03bb [[2 1] [1 0]]]]] \u03bb1] \u03bb0]\" min=\"\u03bb\u03bb\u03bb\u03bb [[[3 \u03bb\u03bb [0 1]] \u03bb1] [[2 \u03bb\u03bb [3 [0 1]]] \u03bb1]]\" div=\"\u03bb\u03bb\u03bb\u03bb [[[3 \u03bb\u03bb [0 1]] \u03bb 1] [[3 \u03bb [[[3 \u03bb\u03bb [0 1]] \u03bb [3 [0 1]]] \u03bb0]] 0]]\" mod=\"\u03bb\u03bb\u03bb\u03bb [[[3 $cdr] [[3 \u03bb [[[3 \u03bb\u03bb\u03bb [[0 [2 [5 1]]] 1]] \u03bb1] 1]] \u03bb1]] \u03bb\u03bb0]\"<\/pre>\n<p>  \u0412\u043e\u0442 \u043f\u0440\u0435\u0434\u0438\u043a\u0430\u0442\u044b:<\/p>\n<pre>eq=\"\u03bb\u03bb [[[[1 \u03bb [[0 \u03bb0] \u03bb0]] [[0 \u03bb\u03bb\u03bb [1 2]] \u03bb\u03bb0]] \u03bb\u03bb\u03bb0] \u03bb\u03bb1]\" le=\"\u03bb\u03bb [[[1 \u03bb\u03bb [0 1]] \u03bb\u03bb\u03bb1] [[0 \u03bb\u03bb [0 1]] \u03bb\u03bb\u03bb0]]\" lt=\"\u03bb\u03bb [[[0 \u03bb\u03bb [0 1]] \u03bb\u03bb\u03bb0] [[1 \u03bb\u03bb [0 1]] \u03bb\u03bb\u03bb1]]\" odd=\"\u03bb [\u03bb [0 0] \u03bb\u03bb [[0 \u03bb\u03bb 1] \u03bb [[0 \u03bb\u03bb 0] [2 2]]]]\" divides=\"\u03bb\u03bb [[[1 $cdr] [$omega \u03bb[[[1 \u03bb\u03bb\u03bb [[0 [2 \u03bb\u03bb0]] 1]] \u03bb[1 1]] \u03bb\u03bb1]]] \u03bb\u03bb0]\"<\/pre>\n<p>  <\/p>\n<h2>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439<\/h2>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 blcdump:<\/p>\n<pre>$ printf 0010 | blcdump.com -l 2>\/dev\/null \u03bba.a  # convert to traditional notation $ blcdump.com -l &lt;invert.blc 2>\/dev\/null \u03c9(\u03bbab.b(\u03bbcdef.f(c\u22a5\u22a4)(aad))\u22a5)  # convert to de Bruijn notation $ blcdump.com &lt;invert.blc 2>\/dev\/null [\u03c9 \u03bb\u03bb [[0 \u03bb\u03bb\u03bb\u03bb [[0 [[3 \u22a5] \u22a4]] [[5 5] 2]]] \u22a5]]  # convert Blc to blc $ blcdump.com -bB &lt;uni.Blc 2>\/dev\/null 00011001010001101000000001010101100000000000010...  # create portable lambda expression $ blcdump.com -lnNS &lt;invert.blc 2>\/dev\/null (\\a.a a) (\\a.(\\b.(b (\\c.(\\d.(\\e.(\\f.(f(c (\\g.(\\h.h)) (\\g.(\\h.g)))(a a d)))))) (\\c.(\\d.d)))))<\/pre>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 lam2bin:<\/p>\n<pre>$ { printf '\u03bba.a' | lam2bin.com; printf 1010; } | blc 1010 $ { printf '\\\\a.a' | lam2bin.com; printf 1010; } | blc 1010 $ { printf '\u03c9(\u03bbab.b(\u03bbcdef.f(c\u22a5\u22a4)(aad))\u22a5)' | lam2bin.com; printf 1010; } | blc 0101<\/pre>\n<p>  \u0412\u043e\u0442 \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0443\u0442\u0438\u043b\u0438\u0442\u0430 asc2bin:<\/p>\n<pre>$ { printf '\u03bba.a' | lam2bin.com | asc2bin.com; echo hello; } | Blc hello<\/pre>\n<p>  <\/p>\n<h2>\u0421\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f<\/h2>\n<p>  \u0412\u041c \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre>? \u27f6 [\u03bb [0 \u03bb [[0 wr0] wr1]] [? \u22ef]]<\/pre>\n<p>  \u0423\u0441\u043b\u043e\u0432\u043d\u043e\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043b\u0435\u043d\u0438\u0432\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0440\u0435\u0434\u0443\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre>\u22ef \u27f9 $nil                     ;; if eof \/ error \u22ef \u27f9 \u03bb [[0 $false] \u22ef]         ;; if ~getc() &amp; 1 \u22ef \u27f9 \u03bb [[0 $true] \u22ef]          ;; if  getc() &amp; 1<\/pre>\n<p>  \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>wr0<\/code> \u0438 <code>wr1<\/code> \u0440\u0435\u0434\u0443\u0446\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre>wr0 \u27f9 \u03bb [0 \u03bb [[0 wr0] wr1]]  ;; w\/ putc(0) side-effect wr1 \u27f9 \u03bb [0 \u03bb [[0 wr0] wr1]]  ;; w\/ putc(1) side-effect<\/pre>\n<p>  8-\u0431\u0438\u0442\u043d\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f (Blc \u0441 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u043e\u0439) \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 big-endian. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u043e\u0431\u0435\u043b (0b00100000) \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<pre>\u03bb [[0 \u03bb [[0 \u22a4] \u03bb [[0 \u22a5] \u03bb [[0 \u22a5] \u03bb [[0 \u22a4] \u03bb [[0 \u22a5] \u03bb [[0 \u22a4] \u03bb [[0 \u22a4] \u03bb [[0 \u22a4] \u22a5]]]]]]]]] \u22ef]<\/pre>\n<p>  <\/p>\n<h2>\u0414\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/h2>\n<p>  <code>-rwxr-xr-x 1 jart jart 397 Feb 27 12:15<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blc\" rel=\"nofollow noopener noreferrer\">blc<\/a> (\u0442\u043e\u043b\u044c\u043a\u043e linux x86-64)<br \/>  <code>-rwxr-xr-x 1 jart jart 521 Feb 27 12:15<\/code> <a href=\"https:\/\/justine.lol\/lambda\/Blc\" rel=\"nofollow noopener noreferrer\">Blc<\/a> (\u0442\u043e\u043b\u044c\u043a\u043e linux x86-64)<br \/>  <code>-rwxr-xr-x 1 jart jart 20K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/tromp.com\" rel=\"nofollow noopener noreferrer\">tromp.com<\/a> (ioccc 2012)<br \/>  <code>-rwxr-xr-x 1 jart jart 48K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lambda.com\" rel=\"nofollow noopener noreferrer\">lambda.com<\/a> (\u0434\u0440\u0443\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439)<br \/>  <code>-rwxr-xr-x 1 jart jart 36K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blcdump.com\" rel=\"nofollow noopener noreferrer\">blcdump.com<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 40K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/bru2bin.com\" rel=\"nofollow noopener noreferrer\">bru2bin.com<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 40K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lam2bin.com\" rel=\"nofollow noopener noreferrer\">lam2bin.com<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 20K Feb 28 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/asc2bin.com\" rel=\"nofollow noopener noreferrer\">asc2bin.com<\/a>  <\/p>\n<h2>\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b<\/h2>\n<p>  <code>-rw-r--r-- 1 jart jart 84 Feb 27 12:54<\/code> <a href=\"https:\/\/justine.lol\/lambda\/invert.blc\" rel=\"nofollow noopener noreferrer\">invert.blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 167 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/primes.blc\" rel=\"nofollow noopener noreferrer\">primes.blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 232 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/uni.blc\" rel=\"nofollow noopener noreferrer\">uni.blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 43 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/uni.Blc\" rel=\"nofollow noopener noreferrer\">uni.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 67 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/reverse.blc\" rel=\"nofollow noopener noreferrer\">reverse.blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 9 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/reverse.Blc\" rel=\"nofollow noopener noreferrer\">reverse.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 186 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/symbolic.Blc\" rel=\"nofollow noopener noreferrer\">symbolic.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 143 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/hilbert.Blc\" rel=\"nofollow noopener noreferrer\">hilbert.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 141 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/parse.Blc\" rel=\"nofollow noopener noreferrer\">parse.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 112 Feb 27 12:52<\/code> <a href=\"https:\/\/justine.lol\/lambda\/bf.Blc\" rel=\"nofollow noopener noreferrer\">bf.Blc<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 112 Feb 27 12:55<\/code> <a href=\"https:\/\/justine.lol\/lambda\/hw.bf\" rel=\"nofollow noopener noreferrer\">hw.bf<\/a><\/p>\n<h2>\u0421\u043a\u0440\u0438\u043f\u0442\u044b<\/h2>\n<p>  <code>-rwxr-xr-x 1 jart jart 343 Feb 27 12:06<\/code> <a href=\"https:\/\/justine.lol\/lambda\/compile.sh\" rel=\"nofollow noopener noreferrer\">compile.sh<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 224 Feb 27 12:06<\/code> <a href=\"https:\/\/justine.lol\/lambda\/trace.sh\" rel=\"nofollow noopener noreferrer\">trace.sh<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 661 Feb 27 12:06<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lam2sh.sh\" rel=\"nofollow noopener noreferrer\">lam2sh.sh<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 573 Feb 27 12:06<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lam2sqr.sh\" rel=\"nofollow noopener noreferrer\">lam2sqr.sh<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 565 Feb 27 12:06<\/code> <a href=\"https:\/\/justine.lol\/lambda\/sqr2lam.sh\" rel=\"nofollow noopener noreferrer\">sqr2lam.sh<\/a><\/p>\n<h2>\u0418\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438<\/h2>\n<p>  <code>-rw-r--r-- 1 jart jart 17K Feb 27 12:15<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blc.S?v=3\" rel=\"nofollow noopener noreferrer\">blc.S<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 12K Feb 24 17:25<\/code> <a href=\"https:\/\/justine.lol\/lambda\/Blc.S?v=2\" rel=\"nofollow noopener noreferrer\">Blc.S<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 3.1K Feb 27 12:18<\/code> <a href=\"https:\/\/justine.lol\/lambda\/Makefile\" rel=\"nofollow noopener noreferrer\">Makefile<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 1023 Feb 27 12:03<\/code> <a href=\"https:\/\/justine.lol\/lambda\/tromp.c\" rel=\"nofollow noopener noreferrer\">tromp.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 7.9K Feb 27 12:04<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lambda.c\" rel=\"nofollow noopener noreferrer\">lambda.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 3.1K Feb 27 12:05<\/code> <a href=\"https:\/\/justine.lol\/lambda\/asc2bin.c\" rel=\"nofollow noopener noreferrer\">asc2bin.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 7.9K Feb 27 12:05<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lam2bin.c\" rel=\"nofollow noopener noreferrer\">lam2bin.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 8.3K Feb 27 12:05<\/code> <a href=\"https:\/\/justine.lol\/lambda\/bru2bin.c\" rel=\"nofollow noopener noreferrer\">bru2bin.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 4.7K Feb 27 12:08<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blcdump.c\" rel=\"nofollow noopener noreferrer\">blcdump.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 1.3K Feb 27 12:05<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blc.h\" rel=\"nofollow noopener noreferrer\">blc.h<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 4.5K Feb 27 12:09<\/code> <a href=\"https:\/\/justine.lol\/lambda\/debug.c\" rel=\"nofollow noopener noreferrer\">debug.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 2.2K Feb 27 12:09<\/code> <a href=\"https:\/\/justine.lol\/lambda\/error.c\" rel=\"nofollow noopener noreferrer\">error.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 2.4K Feb 27 12:09<\/code> <a href=\"https:\/\/justine.lol\/lambda\/getbit.c\" rel=\"nofollow noopener noreferrer\">getbit.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 7.9K Feb 27 12:04<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lambda.c\" rel=\"nofollow noopener noreferrer\">lambda.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 1.8K Feb 27 12:10<\/code> <a href=\"https:\/\/justine.lol\/lambda\/needbit.c\" rel=\"nofollow noopener noreferrer\">needbit.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 2.5K Feb 27 12:08<\/code> <a href=\"https:\/\/justine.lol\/lambda\/parse.c\" rel=\"nofollow noopener noreferrer\">parse.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 35K Feb 27 12:08<\/code> <a href=\"https:\/\/justine.lol\/lambda\/print.c\" rel=\"nofollow noopener noreferrer\">print.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 1023 Feb 27 12:03<\/code> <a href=\"https:\/\/justine.lol\/lambda\/tromp.c\" rel=\"nofollow noopener noreferrer\">tromp.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 2.5K Feb 27 12:10<\/code> <a href=\"https:\/\/justine.lol\/lambda\/vars.c\" rel=\"nofollow noopener noreferrer\">vars.c<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 2.1K Mar 1 09:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/flat.lds\" rel=\"nofollow noopener noreferrer\">flat.lds<\/a><br \/>  <code>-rw-r--r-- 1 jart jart 3.5K Mar 1 09:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/unflat.lds\" rel=\"nofollow noopener noreferrer\">unflat.lds<\/a><\/p>\n<h2>\u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c DWARF<\/h2>\n<p>  <code>-rwxr-xr-x 1 jart jart 419K Feb 27 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/tromp.com.dbg\" rel=\"nofollow noopener noreferrer\">tromp.com.dbg<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 822K Feb 27 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lambda.com.dbg\" rel=\"nofollow noopener noreferrer\">lambda.com.dbg<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 736K Feb 27 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/blcdump.com.dbg\" rel=\"nofollow noopener noreferrer\">blcdump.com.dbg<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 663K Feb 27 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/bru2bin.com.dbg\" rel=\"nofollow noopener noreferrer\">bru2bin.com.dbg<\/a><br \/>  <code>-rwxr-xr-x 1 jart jart 677K Feb 27 12:11<\/code> <a href=\"https:\/\/justine.lol\/lambda\/lam2bin.com.dbg\" rel=\"nofollow noopener noreferrer\">lam2bin.com.dbg<\/a><\/p>\n<h2>\u0414\u0435\u043c\u043e Blinkenlights<\/h2>\n<p>  \u0412\u043e\u0442 \u0441\u043a\u0440\u0438\u043d\u043a\u0430\u0441\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0435\u0439 SectorLambda \u0432 <a href=\"https:\/\/justine.lol\/blinkenlights\/\" rel=\"nofollow noopener noreferrer\">Blinkenlights<\/a>. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0432\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043a\u0430\u043a \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0430 0010, \u0438\u043b\u0438 (\u03bb 0), \u0438\u043b\u0438 \u03bb?.?. \u041f\u043e\u0441\u043b\u0435 \u0432\u0432\u043e\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0441\u0435 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448 \u0431\u0443\u0434\u0443\u0442 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f echo \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043c\u043b\u0430\u0434\u0448\u0435\u0433\u043e \u0431\u0438\u0442\u0430.<\/p>\n<div class=\"oembed\">\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/622c41125651a61252a00565\" data-style=\"\" id=\"622c41125651a61252a00565\" width=\"\"><\/div>\n<\/div>\n<p>  \u0412 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0432\u0438\u0434\u043d\u044b \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043a\u0443\u0447\u0438 \u0432 \u0441\u0442\u0435\u043a\u0435, \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430. \u0412 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0432\u0438\u0434\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044e\u0449\u0435\u0435\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0432\u043e\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0445 \u0447\u043b\u0435\u043d\u043e\u0432. \u042d\u0442\u0438 \u0447\u043b\u0435\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0437\u0430.<\/p>\n<h2>\u0421\u0445\u0435\u043c\u044b \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440<\/h2>\n<p>  <\/p>\n<div class=\"scrollable-table\">\n<table>\n<tr>\n<td>\n<h3>busy beaver<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(a(\u03bbb.a))<\/p>\n<pre>\u03bb [$omega [0 \u03bb 1]]<\/pre>\n<p>  <\/p>\n<pre>000100011010011000110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5h\/c7\/cg\/5hc7cgmkae1fnownsaowyn7ymcq.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/webt\/5h\/c7\/cg\/5hc7cgmkae1fnownsaowyn7ymcq.png\"\/><\/p>\n<h3>ackermann<\/h3>\n<p>  \u03bba.a(\u03bbbc.cbc)(\u03bbb.bb)a<\/p>\n<pre>\u03bb [[[0 \u03bb\u03bb [[0 1] 0]] $omega] 0]<\/pre>\n<p>  <\/p>\n<pre>00010101100000010110110100001101010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/_j\/in\/rr\/_jinrrbhyhasqyulpky2pkcrybo.png\" data-src=\"https:\/\/habrastorage.org\/webt\/_j\/in\/rr\/_jinrrbhyhasqyulpky2pkcrybo.png\"\/><\/p>\n<h3>Fibonacci<\/h3>\n<p>  \u03bba.a(\u03bbbcd.bd(\u03bbe.c(de)))(\u03bbbc.b)(\u03bbb.b)  <\/p>\n<pre>00010101100000000101111010000111 10011101000001100010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/h6\/kf\/wf\/h6kfwf5mew620mvwtyzvptkbdaw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/h6\/kf\/wf\/h6kfwf5mew620mvwtyzvptkbdaw.png\"\/><\/p>\n<h3>minimum<\/h3>\n<p>  \u03bbabcd.a(\u03bbef.fe)(\u03bbe.d)(b(\u03bbef.c(fe))(\u03bbe.d))<\/p>\n<pre>000000000101011111000000110110001 100101111000000111110011011000110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/gw\/uh\/j0\/gwuhj0bqcccripjys5hotoy2_he.png\" data-src=\"https:\/\/habrastorage.org\/webt\/gw\/uh\/j0\/gwuhj0bqcccripjys5hotoy2_he.png\"\/><\/p>\n<h3>reverse stream<\/h3>\n<p>  \u03bba.a((\u03bbb.bb)(\u03bbbcde.d(bb)(\u03bbf.fce)))(\u03bbbc.c)<\/p>\n<pre>\u03bb [[0 [$omega        \u03bb\u03bb\u03bb\u03bb [[1 [3 3]] \u03bb [[0 3] 1]]]]     $nil]<\/pre>\n<p>  <\/p>\n<pre>0001011001000110100000000001011100 111110111100001011011110110000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ml\/b7\/vg\/mlb7vgicy56lvvn6tfxnz0t5dls.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ml\/b7\/vg\/mlb7vgicy56lvvn6tfxnz0t5dls.png\"\/><\/p>\n<h3>all predicate<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(\u03bbbc.c(\u03bbde.e)(bb))<\/p>\n<pre>\u03bb [$omega \u03bb\u03bb [[0 $false] [1 1]]]<\/pre>\n<p>  <\/p>\n<pre>00010001101000000101100000100111 0110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/nu\/dq\/_9\/nudq_9fbjv0qewnokwtzwvm8ygg.png\" data-src=\"https:\/\/habrastorage.org\/webt\/nu\/dq\/_9\/nudq_9fbjv0qewnokwtzwvm8ygg.png\"\/><\/p>\n<h3>none predicate<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(\u03bbbc.c(\u03bbde.d)(bb))<\/p>\n<pre>00010001101000000101100000110011 10110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cv\/4i\/ix\/cv4iixnpdelzdtnxxo6jvs2oils.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cv\/4i\/ix\/cv4iixnpdelzdtnxxo6jvs2oils.png\"\/><\/p>\n<h3>less or equal predicate<\/h3>\n<p>  \u03bbab.a(\u03bbcd.dc)(\u03bbcde.d)(b(\u03bbcd.dc)(\u03bbcde.e))<\/p>\n<pre>00000101011100000011011000000011 00101100000011011000000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/we\/qj\/oa\/weqjoagoeblbzbyhqxdbqdji62k.png\" data-src=\"https:\/\/habrastorage.org\/webt\/we\/qj\/oa\/weqjoagoeblbzbyhqxdbqdji62k.png\"\/><\/p>\n<h3>equal predicate<\/h3>\n<p>  \u03bbab.a(\u03bbc.c(\u03bbd.d)(\u03bbd.d))(b(\u03bbcde.dc)(\u03bbcd.d))(\u03bbcde.e)(\u03bbcd.c)<\/p>\n<pre>00000101010111000010110001000100 10110000000011101110000010000000 100000110<\/pre>\n<\/td>\n<td>\n<h3>addition<\/h3>\n<p>  \u03bbabcd.ac(bcd)<\/p>\n<pre>\u03bb\u03bb\u03bb\u03bb [[3 1] [[2 1] 0]]<\/pre>\n<p>  <\/p>\n<pre>000000000101111101100101111011010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/xe\/qx\/t_\/xeqxt_3gizw0da1onettebfj3km.png\" data-src=\"https:\/\/habrastorage.org\/webt\/xe\/qx\/t_\/xeqxt_3gizw0da1onettebfj3km.png\"\/><\/p>\n<h3>subtraction<\/h3>\n<p>  \u03bbab.b(\u03bbcde.c(\u03bbfg.g(fd))(\u03bbf.e)(\u03bbf.f))a<\/p>\n<pre>\u03bb\u03bb [[0 \u03bb\u03bb\u03bb [[[2 \u03bb\u03bb [0 [1 3]]]             \u03bb 1] \u03bb 0]] 1]<\/pre>\n<p>  <\/p>\n<pre>00000101100000000101011110000001 100111011110001100010110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/-0\/ga\/b8\/-0gab8lix7v5ha1eo6pj2tp4sb0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/-0\/ga\/b8\/-0gab8lix7v5ha1eo6pj2tp4sb0.png\"\/><\/p>\n<h3>factorial<\/h3>\n<p>  \u03bbab.a(\u03bbcd.d(c(\u03bbef.de(ef))))(\u03bbc.b)(\u03bbc.c)<\/p>\n<pre>\u03bb\u03bb [[[1 \u03bb\u03bb [0 [1     \u03bb\u03bb [[2 1] [1 0]]]]] \u03bb 1]         \u03bb 0]<\/pre>\n<p>  <\/p>\n<pre>00000101011100000011001110000001 0111101100111010001100010<\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/34\/dz\/m2\/34dzm2aj1trihddbfp1ltbtdfpq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/34\/dz\/m2\/34dzm2aj1trihddbfp1ltbtdfpq.png\"\/><\/div>\n<h3>invert bitstream<\/h3>\n<p>  \u03c9(\u03bbab.b(\u03bbcdef.f(c\u22a5\u22a4)(aad))\u22a5)<\/p>\n<pre>[$Y \u03bb\u03bb [[[$if 0]              \u03bb\u03bb\u03bb [[$pair [$not 2]]                          [4 1]]]            $nil]]<\/pre>\n<p>  <\/p>\n<pre>01000110100000010110000000000101 10010111110000010000011001011111 11011111101110000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/7h\/bh\/ok\/7hbhokjlrhhe9rr49jq7y1t3vfc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/7h\/bh\/ok\/7hbhokjlrhhe9rr49jq7y1t3vfc.png\"\/><\/p>\n<h3>even predicate<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(\u03bbbc.c(\u03bbde.e)(\u03bbd.d(\u03bbef.e)(bb)))<\/p>\n<pre>00010001101000000101100000100001 011000001100111101110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/89\/rf\/ix\/89rfix-wbm1uwhthpuikbxf2jeo.png\" data-src=\"https:\/\/habrastorage.org\/webt\/89\/rf\/ix\/89rfix-wbm1uwhthpuikbxf2jeo.png\"\/><\/p>\n<h3>odd predicate<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(\u03bbbc.c(\u03bbde.d)(\u03bbd.d(\u03bbef.f)(bb)))<\/p>\n<pre>00010001101000000101100000110000 101100000100111101110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/cd\/vt\/r1\/cdvtr1rpw84ou4yoaj6fwjsepuy.png\" data-src=\"https:\/\/habrastorage.org\/webt\/cd\/vt\/r1\/cdvtr1rpw84ou4yoaj6fwjsepuy.png\"\/><\/p>\n<h3>less than predicate<\/h3>\n<p>  \u03bbab.b(\u03bbcd.dc)(\u03bbcde.e)(a(\u03bbcd.dc)(\u03bbcde.d))<\/p>\n<pre>00000101011000000110110000000100 10111000000110110000000110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dd\/0b\/fd\/dd0bfdjvfbx4mxzbxr3uyntbqv0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dd\/0b\/fd\/dd0bfdjvfbx4mxzbxr3uyntbqv0.png\"\/><\/p>\n<h3>quine<\/h3>\n<p>  \u03bba.a((\u03bbb.bb)(\u03bbbcdef.fc(d(bb)e)))a<\/p>\n<pre>000101100100011010000000000001011 011110010111100111111011111011010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/qv\/0p\/bp\/qv0pbpgm0qli2nyudu---ey30uo.png\" data-src=\"https:\/\/habrastorage.org\/webt\/qv\/0p\/bp\/qv0pbpgm0qli2nyudu---ey30uo.png\"\/><\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>  <\/p>\n<h3>division<\/h3>\n<p>  \u03bbabcd.a(\u03bbef.fe)(\u03bbe.d)(a(\u03bbe.b(\u03bbfg.gf)(\u03bbf.c(fe))(\u03bbf.f))d)<\/p>\n<pre>\u03bb\u03bb\u03bb\u03bb [[[3 \u03bb\u03bb [0 1]] \u03bb 1] [[3 \u03bb [[[3 \u03bb\u03bb [0 1]] \u03bb [3 [0 1]]] \u03bb 0]] 0]]<\/pre>\n<p>  <\/p>\n<pre>0000000001010111110000001101100011001011111000010101111100000011 01100001111100110110001010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oa\/v6\/gw\/oav6gwyb62s0udxtlimu7b40uxo.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oa\/v6\/gw\/oav6gwyb62s0udxtlimu7b40uxo.png\"\/><\/p>\n<h3>modulus<\/h3>\n<p>  \u03bbabcd.a(\u03bbe.e(\u03bbfg.f))(a(\u03bbe.b(\u03bbfgh.h(f(cg))g)(\u03bbf.e)d)(\u03bbe.d))(\u03bbef.f)<\/p>\n<pre>\u03bb\u03bb\u03bb\u03bb [[[3 \u03bb [0 \u03bb\u03bb 1]] [[3 \u03bb [[[3 \u03bb\u03bb\u03bb [[0 [2 [5 1]]] 1]] \u03bb 1] 1]] \u03bb 1]] \u03bb\u03bb 0]<\/pre>\n<p>  <\/p>\n<pre>0000000001010111110000110000011001011111000010101111100000000101 100111100111111101101100011011000110000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/2e\/kb\/ph\/2ekbphw9juvf4gdr8kl-comwdre.png\" data-src=\"https:\/\/habrastorage.org\/webt\/2e\/kb\/ph\/2ekbphw9juvf4gdr8kl-comwdre.png\"\/><\/p>\n<h3>divides predicate<\/h3>\n<p>  \u03bbab.a(\u03bbc.c(\u03bbde.d))((\u03bbc.cc)(\u03bbc.b(\u03bbdef.f(d(\u03bbgh.h))e)(\u03bbd.cc)(\u03bbde.d)))(\u03bbcd.d)<\/p>\n<pre>0000010101110000110000011001000110100001010111000000001011001111 000001011000011101100000110000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/3p\/ej\/uz\/3pejuzq7egnzejrpd5fia6p70di.png\" data-src=\"https:\/\/habrastorage.org\/webt\/3p\/ej\/uz\/3pejuzq7egnzejrpd5fia6p70di.png\"\/><\/p>\n<h3>binary lambda calculus interpreter<\/h3>\n<p>  (\u03bba.aa)(\u03bbabc.c(\u03bbdefg.e(\u03bbh.d(f(\u03bbi.h(g(\u03bbjk.i(\u03bbl.lkj)))(f(\u03bbj.g(\u03bbk.ik(jk))))))(h(g(\u03bbi.ih))(\u03bbi.f(\u03bbj.g(\u03bbk.j(kh)))e))))(aa)b)(\u03bba.a((\u03bbb.bb)(\u03bbb.bb)))<\/p>\n<pre>0101000110100000000101011000000000011110000101111110011110000101 1100111100000011110000101101101110011111000011111000010111101001 1101001011001110000110110000101111100001111100001110011011110111 1100111101110110000110010001101000011010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/nd\/xp\/bn\/ndxpbnfc5cl9s23mlst6ve6qolg.png\" data-src=\"https:\/\/habrastorage.org\/webt\/nd\/xp\/bn\/ndxpbnfc5cl9s23mlst6ve6qolg.png\"\/><\/p>\n<h3>binary lambda calculus interpreter w\/ byte i\/o<\/h3>\n<p>  \u03bba.a((\u03bbb.bb)(\u03bbb.(\u03bbcde.e(\u03bbfgh.g(\u03bbijk.(\u03bbl.f(c(\u03bbm.i(l(\u03bbno.m(\u03bbp.pon)))(c(\u03bbn.l(\u03bbo.mo(no)))))j)(i(l(\u03bbm.mi)j)(c(\u03bbm.l(\u03bbn.m(ni)))g)))d)(\u03bbi.i(\u03bbj.cd(\u03bbk.kfj))))(\u03bbf.f(cd)))(bb))(\u03bbbc.b((\u03bbd.dd)(\u03bbd.dd))))<\/p>\n<pre>0001100101000110100001000000010110000000010111000000001000101111 1111001011111111111000010111111001110000001111000010110110111001 1111111111100001111000010111101001110101110010111110010110000110 1111101110010111111111110000111000011100110111111011111101111111 1000011000010111111111011111110000101101111110110000110011111011 10011010000001110010001101000011010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/bk\/ds\/qi\/bkdsqi5soiiynn3dbgnydtquwik.png\" data-src=\"https:\/\/habrastorage.org\/webt\/bk\/ds\/qi\/bkdsqi5soiiynn3dbgnydtquwik.png\"\/><\/p>\n<h3>Goldbach<\/h3>\n<p>  (\u03bba.a((\u03bbb.bb)(\u03bbbcd.(\u03bbef.ae(f(bbe)))(\u03bbe.eed(\u03bbf.fc)e))(\u03bbbcde.e)))((\u03bba.aa)(\u03bbabc.c(\u03bbde.e)((\u03bbd.aad((\u03bbe.ee)(\u03bbe.d(ee))))(\u03bbd.(\u03bbe.e(e(bd)))(\u03bbefgh.hf(ge)))))(\u03bbabcd.d(\u03bbef.e)(ca)))<\/p>\n<pre>0100011001010001101000000001000001011111110110011001011111101111 1011000010101011010110000110111101000000000100101000110100000000 1011000001001000101011111011110100100011010000111001101000010001 1001100111110110000000000101101110011101111000000000010110000011 00111011110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/uz\/da\/2a\/uzda2ak-wirnh80wa51ox1hphw0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/uz\/da\/2a\/uzda2ak-wirnh80wa51ox1hphw0.png\"\/><\/p>\n<h3>Goodstein<\/h3>\n<p>  \u03bba.a(\u03bbbcd.b(\u03bbe.c(\u03bbfg.e(\u03bbhij.jh(if))(\u03bbh.g)(\u03bbhi.i)))(\u03bbef.de(d(\u03bbg.e(\u03bbhij.g(cdi(\u03bbkl.j(\u03bbm.mkl))(\u03bbkl.j(\u03bbm.kml))h)ij))f)))(\u03bbb.b)(\u03bbb.b(\u03bbcd.c)(\u03bbc.c))(\u03bbb.b(\u03bbcde.c))(\u03bbb.b)(\u03bbbc.b(\u03bbde.cd(de)))(\u03bbbc.b(\u03bbde.cd(d(de)))c)(\u03bbb.b)<\/p>\n<pre>0001010101010101011000000001011110000111100000010101111000000001 0110111001110111110001100000100000010111101100101111000011110000 0000101011111001010101011111111101111111011000000111100001011011 1011000000111100001011110101101110110101000100001011000001100010 0001100000001110001000000111000000101111011001110100000010111000 0001011110110011100111010100010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/fk\/h5\/ow\/fkh5owmmopnwft2cxukagysp1gk.png\" data-src=\"https:\/\/habrastorage.org\/webt\/fk\/h5\/ow\/fkh5owmmopnwft2cxukagysp1gk.png\"\/><\/p>\n<h3>primes<\/h3>\n<p>  \u03bba.(\u03bbb.(\u03bbc.b(b((\u03bbd.dd)(\u03bbdef.f(\u03bbgh.h)((\u03bbg.ddg((\u03bbh.hh)(\u03bbh.g(hh))))(\u03bbghij.jh(i(eg)))))(\u03bbdef.b(fd))))((\u03bbde.d(d(de)))(ccc)(\u03bbdefg.ge(fd))(\u03bbdefg.g)))(\u03bbcd.c(cd)))(\u03bbbc.c(\u03bbde.d)b)<\/p>\n<pre>0001000100010111001110010100011010000000010110000010010001010111 1101111010010001101000011100110100000000001011011100111001111111 0111100000000111111001101110010101000001110011100111010010110101 0000000000101101110011101111000000000100000011100111010000001011 00000110110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/8g\/xx\/cf\/8gxxcf5wuoaw_wiprbp53nqwxai.png\" data-src=\"https:\/\/habrastorage.org\/webt\/8g\/xx\/cf\/8gxxcf5wuoaw_wiprbp53nqwxai.png\"\/><\/p>\n<h3>sort<\/h3>\n<p>  \u03bba.(\u03bbb.bb)(\u03bbb.(\u03bbcde.e(\u03bbfg.(\u03bbh.hh)(\u03bbhi.i(\u03bbjkl.hhk(\u03bbm.j(\u03bbnopqrs.sm(n(\u03bbu.uoq)q)(nr(\u03bbu.uor)))(\u03bbnop.p(\u03bbqr.mq(\u03bbs.sqr))no)))(\u03bbj.(\u03bbk.jkkk)(\u03bbkl.l)))e(\u03bbhijk.(\u03bbl.h(d(\u03bbmn.n))(c(l(\u03bbmn.m))i(c(l(\u03bbmn.n))jk)))(\u03bblm.d(\u03bbn.nlm)))))(bb))(\u03bbb.b)a(\u03bbbc.c)<\/p>\n<pre>0001010101000110100001000000011000000101010001101000000101100000 0001010111111011111011000010111110000000000000010101101111111001 0111111100001011011111101111011100101111111011000010110111111011 1000000001010110000001011111110110000101101110110111011000010001 0101110101010000010111000000000010001011111100111111111100000100 1010111111111110011000001101111001010111111111110011000001011101 1000000111111111110000101101110110011010001010000010<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kf\/tq\/87\/kftq87ykpwriscajuh8yj7ke1yc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/kf\/tq\/87\/kftq87ykpwriscajuh8yj7ke1yc.png\"\/><\/p>\n<h3>compliant brainf#*k interpreter<\/h3>\n<p>  \u03bba.(\u03bbb.a((\u03bbc.cc)(\u03bbc.(\u03bbd.(\u03bbe.(\u03bbf.(\u03bbg.(\u03bbh.g(f(h(f(h(f(h(h(e(b(\u03bbijk.ikj)))))(f(f(e(\u03bbijklm.m(\u03bbn.inkl)))(e(b(\u03bbi.i))))(g(e(\u03bbijklmn.nj(ijklm)))))))(h(h(f(g(e(\u03bbijkl.l(\u03bbm.im(\u03bbn.njk)))))(g(e(\u03bbijkl.ki(\u03bbm.mjl)))))))))(g(h(h(f(h(h(\u03bbij.jd(\u03bbk.e((\u03bbl.ll)(\u03bblmn.n((\u03bbo.oo)(\u03bbopq.p(q(oo))(\u03bbr.k(llr))))mn))k))))(g(h(\u03bbijk.k(\u03bbl.l)j)))))))))(f(e(\u03bbh.h))))(\u03bbg.fg(e(\u03bbh.h))))(\u03bbfgh.h(\u03bbi.ifg)))(\u03bbefg.gd(\u03bbhij.j(\u03bbk.e(hk))i)))(cc)))(\u03bbc.(\u03bbd.dd)(\u03bbde.e((\u03bbf.f(f(f(\u03bbgh.h(\u03bbij.i)g))))(\u03bbfg.f(fg))(\u03bbfg.g))(dd))(c(\u03bbdefghi.i))c))(\u03bbbcd.c((\u03bbe.ee)(\u03bbefg.f(\u03bbhij.eei(\u03bbkl.g(\u03bbm.m(lh)k)(bhl(\u03bbm.m))))(gf(\u03bbhij.hji)))d(\u03bbef.e)))<\/p>\n<pre>0001000101110010001101000010001000100010001000111001011110011001 0111100110010111100110011001111100111111110000000010111101011001 0111100101111001111100000000000011000010101111111010111101110011 1110011111111000100111001111100000000000000101101111100101010111 1111011111011110111011001100110010111100111001111100000000001100 0010111111010000101101111101111001110011111000000000010111011110 0001011011110110011100110011001011110011001100000010110111111100 0010111111110010001101000000001010110010001101000000001011100110 0111101110000111111111001011111111011111110101101010011100110000 0000101100010110011100111100010000101110100111100010000000011000 0101101111011100000000101101111000000001011000011111111001111101 0110011010000101010001101000000101100101000110011001100000010110 0000110110000001110011101000001001110110011000000000000010100000 0001110010101000110100000000101110000000010101111111011111101100 0000101111111000010110011101111110111001010111111111111011111010 00100101101100000000101111010110100000110<\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/bd\/se\/mk\/bdsemktun3_5qis-4rsnk5ccrqc.png\" data-src=\"https:\/\/habrastorage.org\/webt\/bd\/se\/mk\/bdsemktun3_5qis-4rsnk5ccrqc.png\"\/><\/p>\n<h2>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442<\/h2>\n<p>  <\/p>\n<pre><code class=\"cpp\">#define IOP 0  \/\/ code for gro, wr0, wr1, put #define VAR 1  \/\/ code for variable lookup #define APP 2  \/\/ code for applications #define ABS 3  \/\/ code for abstractions #define REF(c) (++(c)->refs, c)  struct Parse {   int n;   int i; };  struct Closure {   struct Closure *next;   struct Closure *envp;   int refs;   int term; };  static const char kRom[] = {     APP, 0,  \/\/  0 (\u03bb 0 \u03bb 0 (\u03bb 0 wr0 wr1) put) (main gro)     ABS,     \/\/  2 \u03bb 0 \u03bb 0 (\u03bb 0 wr0 wr1) put     APP, 0,  \/\/  3     VAR, 0,  \/\/  5     ABS,     \/\/  7     APP,     \/\/  8     ABS,     \/\/  9 \u03bb 0 \u03bb 0 wr0 wr1     APP, 2,  \/\/ 10     VAR,     \/\/ 12     IOP,     \/\/ 13     ABS,     \/\/ 14 \u03bb 0 wr0 wr1     APP, 4,  \/\/ 15     APP, 1,  \/\/ 17     VAR,     \/\/ 19     IOP,     \/\/ 20 wr0     IOP, 0,  \/\/ 21 wr1 };  long ip;                \/\/ instruction pointer long end;               \/\/ end of code pointer int mem[TERMS];         \/\/ bss memory for terms struct Closure *frep;   \/\/ freed closures list struct Closure *contp;  \/\/ continuations stack struct Closure root = {.refs = 1}; struct Closure *envp = &amp;root;  void Gc(struct Closure *p) {   for (; p &amp;&amp; p != &amp;root; p = p->envp) {     if (--p->refs) break;     Gc(p->next);     p->next = frep;     frep = p;   } }  void Var(void) {   int i, x;   struct Closure *t, *e;   e = t = envp;   x = mem[ip + 1];   for (i = 0; i &lt; x &amp;&amp; e != &amp;root; ++i) e = e->next;   if (e == &amp;root) Error(10 + x, \"UNDEFINED VARIABLE %d\", x);   ip = e->term;   envp = REF(e->envp);   Gc(t); }  void Gro(void) {   int c;   if ((c = fgetc(stdin)) != -1) {     mem[end++] = ABS;     mem[end++] = APP;     mem[end++] = 8;     mem[end++] = APP;     mem[end++] = 2;     mem[end++] = VAR;     mem[end++] = 0;     mem[end++] = ABS;     mem[end++] = ABS;     mem[end++] = VAR;     mem[end++] = ~c &amp; 1;   } else {     mem[end++] = ABS;     mem[end++] = ABS;     mem[end++] = VAR;     mem[end++] = 0;   } }  void Put(void) {   fputc('0' + (ip &amp; 1), stdout);   ip = 2; }  void Bye(void) {   int rc = mem[ip + 2];  \/\/ (\u03bb 0) [exitcode]   if (rc) Error(rc, \"CONTINUATIONS EXHAUSTED\");   if (postdump &amp;&amp; !rc) Dump(0, end, stderr);   exit(0); }  \/\/ pops continuation and pushes it to environment void Abs(void) {   if (!contp) Bye();   struct Closure *t = contp;   contp = t->next;   t->next = envp;   envp = t;   ++ip; }  struct Closure *Alloc(void) {   struct Closure *t;   if (!(t = frep)) {     if (!(t = calloc(1, sizeof(struct Closure)))) {       Error(6, \"OUT OF HEAP\");     }   }   frep = t->next;   t->refs = 1;   ++heap;   return t; }  \/\/ pushes continuation for argument void App(void) {   int x = mem[ip + 1];   struct Closure *t = Alloc();   t->term = ip + 2 + x;   t->envp = t->term > 21 &amp;&amp; t->term != end ? REF(envp) : &amp;root;   t->next = contp;   contp = t;   ip += 2; }  void Iop(void) {   if (ip == end) {     Gro();   } else {     Put();  \/\/ ip \u2208 {6,13,20,21}   }   Gc(envp);   envp = &amp;root; }  static void Rex(void) {   switch (mem[ip]) {     case VAR:       Var();       break;     case APP:       App();       break;     case ABS:       Abs();       break;     case IOP:       Iop();       break;     default:       Error(7, \"CORRUPT TERM\");   } }  char GetBit(FILE* f) {   int c;   if ((c = fgetc(f)) != -1) c &amp;= 1;   return c; }  char NeedBit(FILE* f) {   char b = GetBit(f);   if (b == -1) Error(9, \"UNEXPECTED EOF\");   return b; }  struct Parse Parse(int ignored, FILE* f) {   int t, start;   char bit, need;   struct Parse p;   for (need = 0, start = end;;) {     if (end + 2 > TERMS) Error(5, \"OUT OF TERMS\");     if ((bit = GetBit(f)) == -1) {       if (!need) break;       Error(9, \"UNFINISHED EXPRESSION\");     } else if (bit) {       for (t = 0; NeedBit(f);) ++t;       mem[end++] = VAR;       mem[end++] = t;       break;     } else if (NeedBit(f)) {       t = end;       end += 2;       mem[t] = APP;       p = Parse(0, f);       mem[t + 1] = p.n;       need = 1;     } else {       mem[end++] = ABS;     }   }   p.i = start;   p.n = end - start;   return p; }  void LoadRom(void) {   long i;   for (; end &lt; sizeof(kRom) \/ sizeof(*kRom); ++end) {     mem[end] = kRom[end];   }   mem[4] = 9;   mem[1] = end - 2; }  void Krivine(void) {   int main;   long gotoget;   LoadRom();   mem[end++] = APP;   gotoget = end++;   main = end;   mem[gotoget] = Parse(1, stdin).n;   for (;;) Rex(); }<\/code><\/pre>\n<h2>\u0410\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u0434<\/h2>\n<p>  <strong>GAS LISTING o\/blc.i page 1<\/strong><\/p>\n<pre><code class=\"cpp\">GNU assembler version 2.34 (x86_64-alpine-linux-musl)  using BFD version (GNU Binutils) 2.34.  options passed: -aghlms=o\/blc.lst  input file    : o\/blc.i  output file   : o\/blc.o  target        : x86_64-alpine-linux-musl  time stamp    : 2022-02-28T10:37:17.000-0800<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 2<\/strong><\/p>\n<pre><code class=\"cpp\">   1              \/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8     -*-\u2502    2              \u2502vi: set et ft=asm ts=8 tw=8 fenc=utf-8                                     :vi\u2502    3              \u255e\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561    4              \u2502 Copyright 2022 Justine Alexandra Roberts Tunney                              \u2502    5              \u2502                                                                              \u2502    6              \u2502 Permission to use, copy, modify, and\/or distribute this software for         \u2502    7              \u2502 any purpose with or without fee is hereby granted, provided that the         \u2502    8              \u2502 above copyright notice and this permission notice appear in all copies.      \u2502    9              \u2502                                                                              \u2502   10              \u2502 THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL                \u2502   11              \u2502 WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED                \u2502   12              \u2502 WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE             \u2502   13              \u2502 AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL         \u2502   14              \u2502 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR        \u2502   15              \u2502 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER               \u2502   16              \u2502 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR             \u2502   17              \u2502 PERFORMANCE OF THIS SOFTWARE.                                                \u2502   18              \u255a\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500*\/   19                 20              #define TRACE   0\/\/ enable .\/trace.sh support   21              #define FASTR   0\/\/ favor perf over tininess   22              #define TERMS5000000\/\/ number of words of bss   23              #define STACK0\/\/ bytes of stack to get   24                 25              #define IOP0\/\/ code for read, write0, write1, flush   26              #define VAR1\/\/ code for variable name lookup   27              #define APP2\/\/ code for applications   28              #define ABS3\/\/ code for abstractions   29                 30              #define NEXT0*8   31              #define ENVP1*8   32              #define REFS2*8+0   33              #define TERM2*8+4   34                 35              #define mem%rbx   36              #define memd%ebx   37              #define envp%rbp   38              #define contp%r9   39              #define frep%r8   40              #define eof%r13   41              #define eofb%r13b   42              #define eofd%r13d   43              #define idx%r15   44              #define idxb%r15b   45              #define idxd%r15d   46                 47              .macropushpop constexpr:req register:req   48              .byte0x6a,\\constexpr   49              pop%r\\register   50              .endm   51                 52              .macromxchg register:req memory:req   53              #if FASTR<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 3<\/strong><\/p>\n<pre><code class=\"cpp\">  54              mov\\register,%rax   55              mov\\memory,\\register   56              mov%rax,\\memory   57              #else   58              xchg\\register,\\memory   59              #endif   60              .endm   61                 62              .bss   63 0000 00000000 .zeroTERMS   63      00000000   63      00000000   63      00000000   63      00000000   64              .previous   65                 66 0000 7F454C46 ehdr:.ascii\"\\177ELF\"   67                 68              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   69              \/\/TWELVE BYTE OVERLAP#   70              \/\/.byte2# EI_CLASS is ELFCLASS64   71              \/\/.byte1# EI_DATA is ELFDATA2LSB   72              \/\/.byte1# EI_VERSION is 1   73              \/\/.byte3# EI_OSABI is ELFOSABI_LINUX   74              \/\/.quad0#   75 0004 03       kRom1:.byteABS#  0       (\u03bb ((0 (\u03bb (\u03bb ?))) \u22ef))   76 0005 02       .byte  APP#  1       8   77 0006 08       .byte  8#\u2500\u25002\u2500\u2500\u2510    -   78 0007 02       .byte    APP#  3  \u2502    (0 (\u03bb (\u03bb ?)))   79 0008 02       .byte    2#\u2500\u25004\u2500\u2500\u2500\u2500\u2510  (read (\u03bb (\u03bb ?)))   80 0009 01       .byte      VAR#  5  \u2502 \u2502  0   81 000a 00       .byte      0#  6  \u2502 \u2502  read   82 000b 03       .byte    ABS#\u2500\u25007\u2500\u2500\u2500\u2500\u2518  (\u03bb (\u03bb ?))   83 000c 03       .byte      ABS#  8  \u2502    (\u03bb ?)   84 000d 01       .byte        VAR#  9  \u2534    ?   85 000e 00       .byte0# exit(0) %al   86 000f 00       .byte0# elf padding                     [mark]   87              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   88                 89 0010 0200     ehdr2:.word2# e_type is ET_EXEC           [precious]   90 0012 3E00     .word62# e_machine is EM_X86_64      [precious]   91                 92              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   93              \/\/FOUR BYTE OVERLAP#   94              \/\/.long1# e_version is 1                  [mark]   95 0014 58       Bye2:pop%rax# __NR_exit   96 0015 0F05     syscall#   97 0017 00       .byte0# elf padding   98              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/   99                100 0018 00000000 ehdr3:.quad_start# e_entry                     [precious]  100      00000000  101 0020 38000000 .quadphdrs - ehdr# e_phoff is 56               [precious]  101      00000000  102                103              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  104              \/\/FOURTEEN BYTE OVERLAP#<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 4<\/strong><\/p>\n<pre><code class=\"cpp\"> 105              \/\/.quad0xc681c031# e_shoff  [should be 0]          [mark]  106              \/\/.long0xfce2abac# e_flags  [should be 0]          [mark]  107              \/\/.word0xc3# e_ehsize [should be 64]         [mark]  108 0028 57       Get:push%rdi#  109 0029 31C0     xor%eax,%eax# __NR_read  110 002b 31FF     xor%edi,%edi# stdin  111 002d 8D73FF   lea-1(mem),%esi# buf  112 0030 0F05     syscall#  113 0032 EB1C     jmpGet2#  114 0034 00       .byte0# elf padding  115 0035 00       .byte0# elf padding  116              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  117                118 0036 3800     .word56# e_phentsize                 [precious]  119                120              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  121              \/\/EIGHT BYTE OVERLAP#  122              \/\/.word1# e_phnum              [correct overlap]  123              \/\/.word0# e_shentsize          [correct overlap]  124              \/\/.word1|2|4# e_shnum              [p_flags clobber]  125              \/\/.word0# e_shstrndx           [correct overlap]  126 0038 01000000 phdrs:.long1# p_type is PT_LOAD  127 003c 07000000 .long1|2|4# p_flags is PF_X|PF_W|PF_R  128              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  129                130 0040 00000000 .quad0# p_offset                    [precious]  130      00000000  131 0048 00000000 .quadehdr# p_vaddr                     [precious]  131      00000000  132                133              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  134              \/\/EIGHT BYTE OVERLAP#  135              \/\/.quadehdr# p_paddr                         [mark]  136 0050 2016     Get2:and%dl,(%rsi)# 1. al= 1 (si)='0' \u2192 ZF=1 CF=1 EAX=0  137 0052 2816     sub%dl,(%rsi)# 2. al= 1 (si)='1' \u2192 ZF=1 CF=0 EAX=0  138 0054 FFC8     dec%eax# 3. al= 0 (si)=??? \u2192 ZF=0 CF=? EAX&lt;0  139 0056 5F       pop%rdi# 4. al=-1 (si)=??? \u2192 ZF=0 CF=? EAX&lt;0  140 0057 C3       .Lret:ret#  141              \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/  142                143 0058 00000000 phdrs2:.quadfilesz# p_filesz         [insurmountable gulf]  143      00000000  144 0060 00000000 .quadmemsz# p_memsz          [insurmountable gulf]  144      00000000  145              \/\/.quad4096# p_align  146                147 0068 97       Bye:xchg%edi,%eax  148 0069 C1EF10   shr$16,%edi  149 006c 6A3C     push$60# __NR_exit  150 006e EBA4     jmpBye2  151                152 0070 FF4810   Gc:declREFS(%rax)# unref memory (order matters)  153 0073 75E2     jnz.Lret# 1. free parents via recursion  154 0075 50       push%rax# 2. free self  155 0076 488B00   movNEXT(%rax),%rax# 3. free siblings via iteration  156 0079 E8F2FFFF callGc  156      FF<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 5<\/strong><\/p>\n<pre><code class=\"cpp\"> 157 007e 58       pop%rax  158 007f 4C8900   movfrep,NEXT(%rax)  159 0082 4989C0   mov%rax,frep  160 0085 488B4008 movENVP(%rax),%rax  161 0089 EBE5     jmpGc  162                163 008b 57       Parse:push%rdi# save 1  164 008c B0       0:.byte0xB0# lda \u00a7movsb,%al (nop next byte)  165 008d A4       1:movsb# 00 is abstraction  166 008e 41FFD6   call*%r14# Get  167 0091 7314     jnc2f  168 0093 41FFD6   call*%r14# Get  169 0096 72F5     jc1b  170 0098 B002     1:mov$APP,%al# 01 is application  171 009a AA       stosb  172 009b 57       push%rdi# save 2  173 009c AE       scasb  174 009d E8E9FFFF callParse  174      FF  175 00a2 5E       pop%rsi# rest 2  176 00a3 8806     mov%al,(%rsi)  177 00a5 EBE5     jmp0b  178 00a7 B001     2:mov$VAR,%al# 1\u22ef is variable  179 00a9 AA       stosb# 0-based de Bruijn indices  180 00aa F6D8     neg%al  181 00ac FEC0     3:inc%al  182 00ae 50       push%rax  183 00af 41FFD6   call*%r14# Get  184 00b2 58       pop%rax  185 00b3 73F7     jnc3b  186 00b5 AA       stosb  187 00b6 5E       pop%rsi# rest 1  188 00b7 89F8     mov%edi,%eax  189 00b9 29F0     sub%esi,%eax  190 00bb C3       ret  191                192 00bc 55       Var:pushenvp  193 00bd 3D       .byte0x3D# cmp \u00a70x6D8B48,%eax (nop 4x)  194 00be 488B6D00 1:movNEXT(envp),envp  195 00c2 FFC9     dec%ecx  196 00c4 79F8     jns1b  197 00c6 448B7D14 2:movTERM(envp),idxd  198 00ca 488B6D08 movENVP(envp),envp  199 00ce FF4510   inclREFS(envp)  200 00d1 58       pop%rax  201 00d2 E899FFFF callGc  201      FF  202 00d7 EB41     jmpRex  203                204 00d9 4D85C9   Abs:testcontp,contp  205 00dc 748A     jzBye  206              mxchgenvp,NEXT(contp)  206              >  206              >  206              >  206              >  206              ><\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 6<\/strong><\/p>\n<pre><code class=\"cpp\"> 206 00de 498729   >  xchg %rbp,0*8(%r9)  206              >  207 00e1 4987E9   xchgenvp,contp  208 00e4 EB34     jmpRex  209                210 00e6 41FFD6   Gro:call*%r14# Get  211              pushpop10,cx  211 00e9 6A0A     >  .byte 0x6a,10  211 00eb 59       >  pop %rcx  212 00ec BE000000 mov$kRom1,%esi  212      00  213 00f1 7403      jz2f  214 00f3 83C607   add$7,%esi  215 00f6 B000     2:mov$0,%al  216 00f8 1400     adc$0,%al  217 00fa F3A4     rep movsb  218 00fc AA       stosb  219 00fd EB1B     jmpRex  220                221              _start:  222              #if STACK  223              mov$STACK,%rsi  224              mov$9,%al# __NR_mmap  225              mov$3,%dl# PROT_READ|PROT_WRITE  226              mov$0x0122,%r10w# MAP_PRIVATE|MAP_ANONYMOUS|MAP_GROWSDOWN  227              syscall  228              lea-24(%rax,%rsi),%rsp  229              mov$0,%dl  230              #endif  231 00ff BB000000 mov$kRom,memd# romz  231      00  232 0104 41BE0000 mov$Get,%r14d# saves two bytes  232      0000  233 010a 4889E5   mov%rsp,envp# prevent segfaults clobber argv[0]  234 010d FEC2     inc%dl# dx=1 for read() and write()  235 010f 8D7B16   .byte0x8d,0x7b,kEnd-kRom+1# lea kEnd-kRom+1(mem),%edi  236 0112 E874FFFF callParse# parse expr (xxx: tight displacement)  236      FF  237 0117 884315   .byte136,67,kEnd-kRom# mov %al,kEnd-kRom(mem)  238              \/\/jmpRex# sets main() apply length  239                240 011a 428B043B Rex:mov(mem,idx),%eax# head normal form reduction  241 011e 0FB6CC   movzbl%ah,%ecx# %al should be \u2208 {0,1,2,3}  242 0121 41FFC7   incidxd  243 0124 3C02     cmp$APP,%al  244 0126 77B1     jaAbs  245 0128 7423     jeApp  246 012a 84C0     test%al,%al  247 012c 758E     jnzVar  248              \/\/jmpIop  249                250 012e 41FFCF   Iop:decidxd# lazy lists like haskell  251 0131 4183FF15 cmp$21,idxd# length of rom  252 0135 77AF     jaGro  253              \/\/jmpPut  254                255 0137 89DE     Put:movmemd,%esi<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 7<\/strong><\/p>\n<pre><code class=\"cpp\"> 256 0139 4183C71E add$30,idxd# 18,19 += 48,49 or '0','1'  257 013d 44883E   movidxb,(%rsi)  258 0140 41B707   mov$7,idxb# \u03bb 0 \u03bb 0 wr0 wr1  259 0143 57         push%rdi  260 0144 89D7     mov%edx,%edi# stdout  261 0146 89D0     mov%edx,%eax# __NR_write  262 0148 0F05     syscall  263 014a 5F       pop%rdi  264 014b EBCD     jmpRex  265                266 014d 4D85C0   App:testfrep,frep  267 0150 7508     jnz1f  268 0152 31C0     xor%eax,%eax  269 0154 50       push%rax# calloc() on stack lool  270 0155 50       push%rax  271 0156 50       push%rax  272 0157 4989E0   mov%rsp,frep  273 015a 41FFC7   1:incidxd  274              mxchgcontp,NEXT(frep)# get closure from free list  274              >  274              >  274              >  274              >  274              >  274 015d 4D8708   >  xchg %r9,0*8(%r8)  274              >  275 0160 4D87C8   xchgcontp,frep  276 0163 41FF4110 inclREFS(contp)# save machine state  277 0167 FF4510   inclREFS(envp)  278 016a 49896908 movenvp,ENVP(contp)  279 016e 4401F9   addidxd,%ecx  280 0171 41894914 mov%ecx,TERM(contp)  281 0175 EBA3     jmpRex  282                283 0177 00       buf:.byte0  284 0178 02       kRom:.byteAPP#  0         [\u03bb [0 \u03bb [[0 wr0] wr1]] [main \u22ef]]  285 0179 12       .byte.Lloop-1f#\u2500\u25001\u2500\u2510  286 017a 03       1:.byte  ABS#  2 \u2502       \u03bb [0 \u03bb [[0 wr0] wr1]]  287 017b 02       .byte    APP#  3 \u2502       [0 \u03bb [[0 wr0] wr1]]  288 017c 07       .byte    .Lw01-1f#\u2500\u25004\u2500\u2500\u2500\u2510  289 017d 0100     1:.byte      VAR,0#  5 \u2502 \u2502     0  290 017f 03       .L0w01:.byte    ABS#\u2500\u25007\u2500\u2534\u2500\u2518     \u03bb [[0 wr0] wr1]  291 0180 02       .byte      APP#  8 \u2502       [[0 wr0] wr1]  292 0181 04       .byte      4#\u2500 9\u2500\u2500\u2500\u2510  293 0182 02       .byte        APP# 10 \u2502 \u2502     [0 wr0]  294 0183 01       .byte        1#\u250011\u2500\u2500\u2500\u2500\u2500\u2510   1  295 0184 01       .byte        VAR# 12 \u2502 \u2502 \u2502   0  296 0185 00       .Lwr:.byte      IOP#\u250013\u2500\u2500\u2500\u2500\u2500\u2518   wr0  297 0186 00       .byte  IOP#\u250014\u2500\u2500\u2500\u2518     wr1  298 0187 02       .Lloop:.byteAPP#\u250015\u2500\u2518       [main \u22ef]  299              kEnd:  300              <\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 8<\/strong><\/p>\n<pre><code class=\"cpp\"> 300              .globlehdr  301              .globl_start  302              .typekRom,@object  303              .typekRom1,@object  304              .typeehdr,@object  305              .typeehdr2,@object  306              .typeehdr3,@object  307              .typephdrs,@object  308              .typephdrs2,@object  309              .typebuf,@object  310              .weakfilesz  311              .weakmemsz<\/code><\/pre>\n<p>  <strong>GAS LISTING o\/blc.i page 9<\/strong><\/p>\n<pre><code class=\"cpp\">DEFINED SYMBOLS                blc.S:66     .text:0000000000000000 ehdr                blc.S:75     .text:0000000000000004 kRom1                blc.S:89     .text:0000000000000010 ehdr2                blc.S:95     .text:0000000000000014 Bye2                blc.S:100    .text:0000000000000018 ehdr3                blc.S:221    .text:00000000000000ff _start                blc.S:126    .text:0000000000000038 phdrs                blc.S:108    .text:0000000000000028 Get                blc.S:136    .text:0000000000000050 Get2                blc.S:143    .text:0000000000000058 phdrs2                blc.S:147    .text:0000000000000068 Bye                blc.S:152    .text:0000000000000070 Gc                blc.S:163    .text:000000000000008b Parse                blc.S:192    .text:00000000000000bc Var                blc.S:240    .text:000000000000011a Rex                blc.S:204    .text:00000000000000d9 Abs                blc.S:210    .text:00000000000000e6 Gro                blc.S:284    .text:0000000000000178 kRom                blc.S:304    .text:000000000000018d kEnd                blc.S:266    .text:000000000000014d App                blc.S:250    .text:000000000000012e Iop                blc.S:255    .text:0000000000000137 Put                blc.S:283    .text:0000000000000177 buf  UNDEFINED SYMBOLS filesz memsz<\/code><\/pre>\n<p>  <\/p>\n<h2>\u0410\u0432\u0442\u043e\u0440\u0441\u0442\u0432\u043e<\/h2>\n<p>  SectorLambda \u043d\u0430\u043f\u0438\u0441\u0430\u043d <a href=\"https:\/\/github.com\/jart\" rel=\"nofollow noopener noreferrer\">\u0416\u044e\u0441\u0442\u0438\u043d \u0422\u0430\u043d\u043d\u0438<\/a> \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u043e\u0431\u0444\u0443\u0441\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0433\u043e <a href=\"https:\/\/tromp.github.io\/\" rel=\"nofollow noopener noreferrer\">\u0414\u0436\u043e\u043d\u043e\u043c \u0422\u0440\u043e\u043c\u043f\u043e\u043c<\/a>. <a href=\"https:\/\/github.com\/peterferrie\" rel=\"nofollow noopener noreferrer\">\u041f\u0438\u0442\u0435\u0440 \u0424\u0435\u0440\u044c\u0435<\/a> \u0438\u0437 Amazon \u0432\u043d\u0451\u0441 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<\/p>\n<h2>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f<\/h2>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/tromp.github.io\/cl\/Binary_lambda_calculus.html\" rel=\"nofollow noopener noreferrer\"> https:\/\/tromp.github.io\/cl\/Binary_lambda_calculus.html<\/a><\/li>\n<li> <a href=\"https:\/\/www.ioccc.org\/2012\/tromp\/hint.html\" rel=\"nofollow noopener noreferrer\"> https:\/\/www.ioccc.org\/2012\/tromp\/hint.html<\/a><\/li>\n<li> <a href=\"https:\/\/github.com\/tromp\/AIT\" rel=\"nofollow noopener noreferrer\"> https:\/\/github.com\/tromp\/AIT<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/654273\/\"> https:\/\/habr.com\/ru\/post\/654273\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/oj\/5q\/5o\/oj5q5oxzwrg1wm5l5-c9mpisx3i.png\" data-src=\"https:\/\/habrastorage.org\/webt\/oj\/5q\/5o\/oj5q5oxzwrg1wm5l5-c9mpisx3i.png\"\/><\/div>\n<p>  \u041b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u2014 \u044d\u0442\u043e \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u043c \u0441\u043b\u043e\u0432\u043e\u043c. \u042d\u0442\u043e \u0430\u0441\u0444\u0430\u043b\u044c\u0442\u043e\u0432\u0430\u044f \u0442\u043e\u043f\u044c \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430, \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043d\u0430\u044f \u043d\u0430\u0443\u0447\u043d\u044b\u043c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0422\u044c\u044e\u0440\u0438\u043d\u0433\u0430. \u0412 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u043e\u0439 397-\u0431\u0430\u0439\u0442\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u043b\u044f\u043c\u0431\u0434\u0430-\u0438\u0441\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 Linux ELF \u0434\u043b\u044f x86-64. \u0422\u0430\u043a\u0436\u0435 \u0432 \u043d\u0451\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 C \u0438 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b <a href=\"https:\/\/justine.lol\/ape.html\" rel=\"nofollow noopener noreferrer\">APE<\/a> \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-330658","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=330658"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/330658\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=330658"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=330658"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=330658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}