          ip('((lambda (tail (1 2))))').should.eql [2]
 
       it 'should return correct result for lambda that takes and returns arg', ->
-         ip('((lambda (x) x) 1)').should.eql 1
+         ip('((lambda (x) x) 1)').should.equal 1
 
       it 'should return correct result for lambda that returns list of vars', ->
          ip('((lambda (x y) (x y)) 1 2)').should.eql [1, 2]


  describe 'indexing', ->
    it 'should find value of list from index', ->
      ip('(@ 1 (1 2 3))').should.eql 2

    it 'should find attribute of dict from index', ->
      ip('(@ "key1" {"key0":"foo" "key1":42 key2:false})').should.eql 42

    it 'should find letter of string from index', ->
      ip('(@ 3 "foobar")').should.eql 'b'

    describe 'lengths', ->
      it 'should get length of string', ->
        ip('(_ "foobar")').should.eql 6

      it 'should get length of list', ->
        ip('(_ (1 2 3))').should.eql 3

      it 'should not any get length of dict', ->
        should.not.exist ip('(_ {0:0 1:1})')

describe 'Whip', ->
  describe 'parser', ->
    it 'should lex a single atom', ->
      'a'.should.equal w.parse('a').value

    it 'should lex an atom in a list', ->
      [].should.eql unan w.parse '()'
