Advertisement
Yevano

Untitled

Mar 4th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.05 KB | None | 0 0
  1. static dynamic apply_io(Lambda f) {
  2.     Lambda i() {
  3.         bool collected = false;
  4.         Lambda next_fun = null;
  5.         uint input = 0;
  6.        
  7.         return (Lazy callback) => {
  8.             if(!collected) {
  9.                 input = (uint) Console.Read();
  10.                 next_fun = i();
  11.                 collected = true;
  12.             }
  13.  
  14.             var next_fun_applicable = (Lambda) callback();
  15.             var char_applicable = (Lambda) next_fun_applicable(lazy(() => next_fun));
  16.             return char_applicable(lazy(() => to_church_natural(input)));
  17.         };
  18.     }
  19.  
  20.     Lambda o() {
  21.         bool written = false;
  22.         Lambda next_fun = null;
  23.  
  24.         return (Lazy m) => {
  25.             if(written) {
  26.                 return next_fun;
  27.             }
  28.  
  29.             written = true;
  30.             Console.Write((char) from_church_natural((Lambda) m()));
  31.             next_fun = o();
  32.             return next_fun;
  33.         };
  34.     }
  35.  
  36.     var ifun = i();
  37.     var ofun = o();
  38.     return ((Lambda) f(lazy(() => ifun)))(lazy(() => ofun));
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement