• Jump To … +
    data.js dentaku.normal.js env.js evaluator.js fileio.js list.js monad.js monad_transformer.js pair.js parser.js pprinter.js string.js turing.js chap01.spec.js chap02.spec.js chap03.spec.js chap04.spec.js chap05.spec.js chap06.spec.js chap07.spec.js chap08.spec.js data.spec.js dentaku.normal.spec.js evaluator.spec.js interpreter.spec.js list.spec.js monad.spec.js monad_transformer.spec.js pair.spec.js parser.spec.js pprinter.spec.js string.spec.js
  • pair.js

  • ¶
    "use strict";
    
    module.exports = {
      type : (pattern) => {
        return pattern.pair();    
      },
  • ¶

    match : (data, pattern) => { return data( pattern); },

      empty: (_) => {
        return {
          type: (pattern) => {
            return pattern.pair();
          },
          match: (pattern) => {
            return pattern.empty();
          }
        };
      },
  • ¶

    pair の代数的データ構造

      cons: (left, right) => {
        return {
          type: (pattern) => {
            return pattern.pair();
          }, 
          match: (pattern) => {
            return pattern.cons(left, right);
          }
        };
      },
  • ¶

    ペアの右側を取得する

      right: (data) => {
        return data.match({
          cons: (left, right) => {
            return right;
          }
        });
      },
  • ¶

    ペアの左側を取得する

      left: (data) => {
        return data.match({
          cons: (left, right) => {
            return left;
          }
        });
      },
  • ¶

    isEqual: (pairA) => { return (pairB) => { }; }

    };