Module: Klam::Converters::List

Includes:
Primitives::Lists
Included in:
Klam::CompilationStages::KlToInternalRepresentation, Reader
Defined in:
lib/klam/converters/list.rb

Overview

Utility methods to convert between Ruby Arrays and Kl Lists

Constant Summary

Constants included from Primitives::Lists

Primitives::Lists::EMPTY_LIST

Instance Method Summary collapse

Methods included from Primitives::Lists

#cons, #cons?, #hd, #tl

Instance Method Details

#arrayToList(array) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/klam/converters/list.rb', line 7

def arrayToList(array)
  list = EMPTY_LIST
  (array.length - 1).downto(0) do |index|
    item = array[index]
    item = arrayToList(item) if item.kind_of?(Array)
    list = cons(item, list)
  end
  list
end

#listToArray(list) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/klam/converters/list.rb', line 17

def listToArray(list)
  array = []
  while list != EMPTY_LIST
    item = hd(list)
    item = listToArray(item) if cons?(item) || item == EMPTY_LIST
    array << item
    list = tl(list)
  end
  array
end