在 The Y Combinator explained with JavaScript 用 JavaScript 程式碼來解釋何謂 Y Combinator,為了更瞭解 Y Combinator,我自己實作了一個,暫記過程如下 ...
def y(f):
r = lambda n: f(r)(n)
return f(r)
y(lambda fact: lambda n: 1 if n < 2 else n * fact(n - 1))(3) // 6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
print((lambda n: (lambda f: [f(i, f) for i in range(0, n)]))(10)(lambda n, fib: n if(n == 0 or n == 1) else fib(n - 1, fib) + fib(n - 2, fib))) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
val s="print(\"quine\")";val v="val s=val v=val c=val p=";val c="\\\";";val p="print(v.slice(0,6)+c(1)+s.slice(0,6)+c.slice(0,2)+s.slice(7,12)+c.slice(0,2)+s.last+c.slice(1,3)+v.slice(6,12)+c(1)+v+c.slice(1,3)+v.slice(12, 18)+c(1)+c(0)+c(0)+c(0)+c.slice(1,3)+c.slice(1,3)+v.slice(18, 24)+c(1)+p+c.slice(1,3)+p)";print(v.slice(0,6)+c(1)+s.slice(0,6)+c.slice(0,2)+s.slice(7,12)+c.slice(0,2)+s.last+c.slice(1,3)+v.slice(6,12)+c(1)+v+c.slice(1,3)+v.slice(12, 18)+c(1)+c(0)+c(0)+c(0)+c.slice(1,3)+c.slice(1,3)+v.slice(18, 24)+c(1)+p+c.slice(1,3)+p) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
s="print('quine')";v="s=v=l=p=";l='";\'\\';p="print(v[0,2]+l[0]+s+l[0,2]+v[2,2]+l[0]+v+l[0]+l[1]+v[4,2]+l[2]+l[0,2]+l[3]+l[2]+l[3]+l[3]+l[2]+l[1]+v[6,2]+l[0]+p+l[0]+l[1]+p)";print(v[0,2]+l[0]+s+l[0,2]+v[2,2]+l[0]+v+l[0]+l[1]+v[4,2]+l[2]+l[0,2]+l[3]+l[2]+l[3]+l[3]+l[2]+l[1]+v[6,2]+l[0]+p+l[0]+l[1]+p) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import static java.lang.System.out; | |
public class Quine{ | |
public static void main(String[] args){ | |
String h="import static java.lang.System.out;\npublic class Quine{\n public static void main(String[] args){\n"; | |
String d="String h=String d=String s=String c="; | |
String s="\"\\n;} "; | |
String c=" out.println(h+s.substring(5)+d.substring(0,9)+s.charAt(0)+(h.substring(0,35)+s.substring(1,3))+h.substring(36,55)+s.substring(1,3)+h.substring(56,97)+s.substring(1,3)+s.charAt(0)+s.charAt(3));out.println(s.substring(5)+d.substring(9,18)+s.charAt(0)+d+s.charAt(0)+s.charAt(3));out.println(s.substring(5)+d.substring(18,27)+s.charAt(0)+s.charAt(1)+s.charAt(0)+s.charAt(1)+s.charAt(1)+s.substring(2)+s.charAt(0)+s.charAt(3));out.println(s.substring(5)+d.substring(27)+s.charAt(0)+c+s.charAt(0)+s.charAt(3)); out.println(c+s.substring(7)+s.charAt(4)+s.charAt(4));"; | |
out.println(h+s.substring(5)+d.substring(0,9)+s.charAt(0)+h.substring(0,35)+s.substring(1,3)+h.substring(36,55)+s.substring(1,3)+h.substring |
The Example of JavaScript Essence: Writing an Ajax Library
(function(global) {
var XD = function(selector, container) {
return new XD.mth.init(selector, container);
};
var utils = {
trim: function(text) {
The Example of JavaScript Essence: Writing a Style Library
(function(global) {
var XD = function(selector, container) {
return new XD.mth.init(selector, container);
};
var utils = {
trim: function(text) {
The Example of JavaScript Essence: Writing an Event Library
(function(global) {
var XD = function(selector, container) {
return new XD.mth.init(selector, container);
};
var utils = {
trim: function(text) {
The Example of JavaScript Essence: Writing A DOM Library
(function(global) {
var XD = function(selector, container) {
return new XD.mth.init(selector, container);
};
var utils = {
trim: function(text) {