mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-06 06:48:48 +00:00
Massive renaming
This commit is contained in:
parent
241ab0a9ae
commit
61296c51e7
152 changed files with 45 additions and 29 deletions
79
stdlib/Array.lama
Normal file
79
stdlib/Array.lama
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
-- Array package.
|
||||
-- (C) Dmitry Boulytchev, JetBrains Research, St. Petersburg State University, 2020
|
||||
--
|
||||
-- This package provides a simplistic implementation of immutable set/map/hashtable
|
||||
-- data structures.
|
||||
|
||||
import List;
|
||||
|
||||
public fun initArray (n, f) {
|
||||
local a = makeArray (n), i;
|
||||
|
||||
for i := 0, i < n, i := i + 1 do
|
||||
a [i] := f (i)
|
||||
od;
|
||||
|
||||
a
|
||||
}
|
||||
|
||||
public fun mapArray (f, a) {
|
||||
initArray (a.length, fun (i) {a[i]})
|
||||
}
|
||||
|
||||
public fun arrayList (a) {
|
||||
local i = 0, res = [0, {}], curr = res;
|
||||
|
||||
for skip, i < a.length, i := i + 1 do
|
||||
curr [1] := a [i] : curr [1];
|
||||
curr := curr [1]
|
||||
od;
|
||||
|
||||
res [1]
|
||||
}
|
||||
|
||||
public fun listArray (l) {
|
||||
local a = makeArray (l.size);
|
||||
|
||||
fun inner (i, l) {
|
||||
case l of {} -> skip | h : t -> a[i] := h; inner (i+1, t) esac
|
||||
}
|
||||
|
||||
inner (0, l);
|
||||
a
|
||||
}
|
||||
|
||||
public fun foldlArray (f, acc, a) {
|
||||
local i = 0;
|
||||
|
||||
for skip, i < a.length, i := i+1 do
|
||||
acc := f (acc, a[i])
|
||||
od;
|
||||
|
||||
acc
|
||||
}
|
||||
|
||||
public fun foldrArray (f, acc, a) {
|
||||
local i = a.length - 1;
|
||||
|
||||
for skip, i >= 0, i := i-1 do
|
||||
acc := f (acc, a[i])
|
||||
od;
|
||||
|
||||
acc
|
||||
}
|
||||
|
||||
public fun iterArray (f, a) {
|
||||
local i = 0;
|
||||
|
||||
for skip, i < a.length, i := i+1 do
|
||||
f (a [i])
|
||||
od
|
||||
}
|
||||
|
||||
public fun iteriArray (f, a) {
|
||||
local i = 0;
|
||||
|
||||
for skip, i < a.length, i := i+1 do
|
||||
f (i, a [i])
|
||||
od
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue