• 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
  • monad_transformer.spec.js

  • ¶
    "use strict";
    
    
    var fs = require('fs');
    var expect = require('expect.js');
  • ¶

    Pair型の読込

    var Pair = require('../lib/pair.js');
  • ¶

    String型の読込

    var String = require('../lib/string.js');
    
    var Maybe = require('../lib/monad.js').Maybe;
    var ID = require('../lib/monad.js').ID;
    var MaybeT = require('../lib/monad_transformer.js').MaybeT;
  • ¶

    MaybeTモナドのテスト

    describe("MaybeTモナドをテストする",() => {
      it("MaybeT#unitをテストする", (next) => {
        Maybe.match(MaybeT.unit(1)(ID),{
          nothing: (_) => {
            return expect.fail();
          },
          just: (v) => {
            expect(
              v
            ).to.eql(
              1
            );
          }
        });
        next();
      });
      it("MaybeT#flatMapをテストする", (next) => {
        var instanceM = MaybeT.unit(1)(ID);
        var identity = (x) => {
          return x;
        };
        var double = (x) => {
          return 2 * x;
        };
        expect(
          MaybeT.flatMap(instanceM)(double)(ID)
        ).to.eql(
          2
        );
        next();
      });
    });