• 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
  • env.js

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

    var fs = require(‘fs’); var List = require(‘./list.js’); var Pair = require(‘../lib/pair.js’); var String = require(‘../lib/string.js’); var PP = require(‘../lib/pprinter.js’); var IO = require(‘../lib/monad.js’).IO;

    const Env = {
  • ¶

    環境モジュール

    空の環境

      empty: (variable) => {
        return undefined;
      },
      /* 変数名に対応する値を環境から取りだす */
  • ¶

    lookupEnv:: (STRING, ENV) => M[VALUE]

      lookup: (identifier, environment) => {
        return environment(identifier);
      },
      /* 環境を拡張する */
  • ¶

    extendEnv:: (STRING, VALUE, ENV) => ENV

      extend: (identifier, value, environment) => {
        expect(identifier).to.a('string');
        return (queryIdentifier) => {
          expect(queryIdentifier).to.a('string');
          if(identifier === queryIdentifier) {
            return value;
          } else {
            return Env.lookup(queryIdentifier, environment);
          }
        };
      }
    };
    module.exports = Env