fork download
  1. #include <iostream>
  2. #include <functional>
  3. using namespace std;
  4.  
  5. //fix :: (a -> a) -> a
  6. //fix f = let x = f x in x
  7. //fac = fix $ \f n -> if (n <= 0) then 1 else n * f (n - 1)
  8. //===========================================================
  9.  
  10. //fac = let f n = if (n <= 0) then 1 else n * f (n - 1) in f
  11. int fac(int n)
  12. {
  13. /*let*/ function<int(int)> f = [&](int n){ if (n <= 0) return 1; else return n * f (n - 1);}; /*in*/
  14. return f(n);
  15. }
  16.  
  17. int main() {
  18. cout<<fac(5)<<endl;
  19. return 0;
  20. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
120