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

  • ¶
    "use strict";
    
    var expect = require('expect.js');
    var Data = require('./data.js');
    var List = require('./list.js');
    
    const Text = {
      head: (str) => {
        expect(str).to.a('string');
        return str[0];
      },
      tail: (str) => {
        expect(str).to.a('string');
        return str.substring(1);
      },
      isEmpty: (str) => {
        return str.length === 0;
      },
      isChar: (str) => {
        return str.length === 1;
      },
      /* 文字列を文字のリストに変換する */
      toList: (str) => {
        expect(str).to.a('string');
        if(Text.isChar(str) === true) {
          return List.cons(str,
                           List.empty());
        } else {
          return List.cons(Text.head(str), 
                           Text.toList(Text.tail(str)));
        }
      }
    };
    module.exports = Text