shen/release/test_programs/qmachine.shen in shen-ruby-0.10.0 vs shen/release/test_programs/qmachine.shen in shen-ruby-0.11.0

- old
+ new

@@ -1,67 +1,67 @@ -(datatype progression - - X : A; S : (A --> A); E : (A --> boolean); - ========================================== - [X S E] : (progression A);) - -(define force - {(progression A) --> A} - [X S E] -> X) - -(define delay - {(progression A) --> (progression A)} - [X S E] -> [(S X) S E]) - -(define end? - {(progression A) --> boolean} - [X S E] -> (E X)) - -(define push - {A --> (progression A) --> (progression A)} - X [Y S E] -> [X (/. Z (if (= Z X) Y (S Z))) E]) - -(define forall - {(progression A) --> (A --> boolean) --> boolean} - [X S E] P -> (if (E X) true (and (P X) (forall [(S X) S E] P)))) - -(define exists - {(progression A) --> (A --> boolean) --> boolean} - [X S E] P -> (if (E X) false (or (P X) (exists [(S X) S E] P)))) - -(define super - {(progression A) --> (A --> B) --> (B --> C --> C) --> C --> C} - [X S E] P F Y -> (if (E X) Y (F (P X) (super [(S X) S E] P F Y)))) - -(define forall - {(progression A) --> (A --> boolean) --> boolean} - Progression P -> (super Progression P (function and) true)) - -(define exists - {(progression A) --> (A --> boolean) --> boolean} - Progression P -> (super Progression P (function or) false)) - -(define for - {(progression A) --> (A --> B) --> number} - Progression P -> (super Progression P (function progn) 0)) - -(define progn - {A --> B --> B} - X Y -> Y) - -(define filter - {(progression A) --> (A --> boolean) --> (list A)} - Progression P -> (super Progression (/. X (if (P X) [X] [])) append [])) - -(define next-prime - {number --> number} - N -> (if (prime? (+ N 1)) (+ N 1) (next-prime (+ N 1)))) - -(define prime? - {number --> boolean} - X -> (prime-help X (/ X 2) 2)) - -(define prime-help - {number --> number --> number --> boolean} - X Max Div -> false where (integer? (/ X Div)) - X Max Div -> true where (> Div Max) +(datatype progression + + X : A; S : (A --> A); E : (A --> boolean); + ========================================== + [X S E] : (progression A);) + +(define force + {(progression A) --> A} + [X S E] -> X) + +(define delay + {(progression A) --> (progression A)} + [X S E] -> [(S X) S E]) + +(define end? + {(progression A) --> boolean} + [X S E] -> (E X)) + +(define push + {A --> (progression A) --> (progression A)} + X [Y S E] -> [X (/. Z (if (= Z X) Y (S Z))) E]) + +(define forall + {(progression A) --> (A --> boolean) --> boolean} + [X S E] P -> (if (E X) true (and (P X) (forall [(S X) S E] P)))) + +(define exists + {(progression A) --> (A --> boolean) --> boolean} + [X S E] P -> (if (E X) false (or (P X) (exists [(S X) S E] P)))) + +(define super + {(progression A) --> (A --> B) --> (B --> C --> C) --> C --> C} + [X S E] P F Y -> (if (E X) Y (F (P X) (super [(S X) S E] P F Y)))) + +(define forall + {(progression A) --> (A --> boolean) --> boolean} + Progression P -> (super Progression P (function and) true)) + +(define exists + {(progression A) --> (A --> boolean) --> boolean} + Progression P -> (super Progression P (function or) false)) + +(define for + {(progression A) --> (A --> B) --> number} + Progression P -> (super Progression P (function progn) 0)) + +(define progn + {A --> B --> B} + X Y -> Y) + +(define filter + {(progression A) --> (A --> boolean) --> (list A)} + Progression P -> (super Progression (/. X (if (P X) [X] [])) append [])) + +(define next-prime + {number --> number} + N -> (if (prime? (+ N 1)) (+ N 1) (next-prime (+ N 1)))) + +(define prime? + {number --> boolean} + X -> (prime-help X (/ X 2) 2)) + +(define prime-help + {number --> number --> number --> boolean} + X Max Div -> false where (integer? (/ X Div)) + X Max Div -> true where (> Div Max) X Max Div -> (prime-help X Max (+ 1 Div))) \ No newline at end of file