Class: String

Inherits:
Object show all
Defined in:
lib/raskell/array.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.emptyObject



84
85
86
# File 'lib/raskell/array.rb', line 84

def self.empty
  ""
end

.next_itemObject



116
117
118
119
# File 'lib/raskell/array.rb', line 116

def self.next_item
  next_fn = ->(xs) { xs.empty? ? [:done] : [:yield, xs.first, Stream.new(next_fn, xs.drop(1))] }
  next_fn
end

.to_stream(xs) ⇒ Object



121
122
123
# File 'lib/raskell/array.rb', line 121

def self.to_stream(xs)
  Stream.new(self.next_item, xs)
end

Instance Method Details

#==(obj) ⇒ Object



130
131
132
# File 'lib/raskell/array.rb', line 130

def ==(obj)
  obj.kind_of?(Stream) ? self.to_stream == obj : standard_equals(obj)
end

#===(obj) ⇒ Object



135
136
137
# File 'lib/raskell/array.rb', line 135

def ===(obj)
  obj.kind_of?(Stream) ? self.to_stream === obj : standard_triple_equals(obj)
end

#drop(n) ⇒ Object



106
107
108
109
110
111
112
113
114
# File 'lib/raskell/array.rb', line 106

def drop(n)
  if n == 0
    self
  elsif n >= self.length
    ""
  else
    self.slice(n, self.length)
  end
end

#empty?Boolean

Returns:



88
89
90
# File 'lib/raskell/array.rb', line 88

def empty?
  self == ""
end

#firstObject



92
93
94
# File 'lib/raskell/array.rb', line 92

def first
  self[0]
end

#standard_equalsObject



129
# File 'lib/raskell/array.rb', line 129

alias_method :standard_equals, :==

#standard_triple_equalsObject



134
# File 'lib/raskell/array.rb', line 134

alias_method :standard_triple_equals, :===

#take(n) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'lib/raskell/array.rb', line 96

def take(n)
  if n == 0
    ""
  elsif n >= self.length
    self
  else
    self.slice(0, n)
  end
end

#to_streamObject



125
126
127
# File 'lib/raskell/array.rb', line 125

def to_stream
  self.class.to_stream(self)
end