2016 Update

This commit is contained in:
Tina Müller 2016-12-05 22:15:40 +01:00
parent 948b86eafa
commit dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions

View file

@ -7,3 +7,5 @@ By ''initialized'' we mean that each item must be in a well-defined state approp
This task was inspired by the common error of intending to do this, but instead creating a sequence of <var>n</var> references to the ''same'' mutable object; it might be informative to show the way to do that as well, both as a negative example and as how to do it when that's all that's actually necessary.
This task is most relevant to languages operating in the pass-references-by-value style (most object-oriented, garbage-collected, and/or 'dynamic' languages).
See also: [[Closures/Value capture]]

View file

@ -0,0 +1,62 @@
-- nObjects Constructor -> Int -> [Object]
on nObjects(f, n)
map(f, range(1, n))
end nObjects
-- TEST
on run
-- someConstructor :: a -> Int -> b
script someConstructor
on lambda(_, i)
{index:i}
end lambda
end script
nObjects(someConstructor, 6)
--> {{index:1}, {index:2}, {index:3}, {index:4}, {index:5}, {index:6}}
end run
-- GENERIC FUNCTIONS -----------------------------------------------------------
-- map :: (a -> b) -> [a] -> [b]
on map(f, xs)
tell mReturn(f)
set lng to length of xs
set lst to {}
repeat with i from 1 to lng
set end of lst to lambda(item i of xs, i, xs)
end repeat
return lst
end tell
end map
-- Lift 2nd class handler function into 1st class script wrapper
-- mReturn :: Handler -> Script
on mReturn(f)
if class of f is script then
f
else
script
property lambda : f
end script
end if
end mReturn
-- range :: Int -> Int -> [Int]
on range(m, n)
if n < m then
set d to -1
else
set d to 1
end if
set lst to {}
repeat with i from m to n by d
set end of lst to i
end repeat
return lst
end range

View file

@ -0,0 +1 @@
{{index:1}, {index:2}, {index:3}, {index:4}, {index:5}, {index:6}}

View file

@ -1 +1 @@
randoms = for _ <- 1..10, do: :random.uniform(1000)
randoms = for _ <- 1..10, do: :rand.uniform(1000)

View file

@ -0,0 +1,14 @@
(n => {
let nObjects = n => Array.from({
length: n + 1
}, (_, i) => {
// optionally indexed object constructor
return {
index: i
};
});
return nObjects(6);
})(6);

View file

@ -0,0 +1,2 @@
[{"index":0}, {"index":1}, {"index":2}, {"index":3},
{"index":4}, {"index":5}, {"index":6}]

View file

@ -0,0 +1,17 @@
-- This concept is relevant to tables in Lua
local table1 = {1,2,3}
-- The following will create a table of references to table1
local refTab = {}
for i = 1, 10 do refTab[i] = table1 end
-- Instead, tables should be copied using a function like this
function copy (t)
local new = {}
for k, v in pairs(t) do new[k] = v end
return new
end
-- Now we can create a table of independent copies of table1
local copyTab = {}
for i = 1, 10 do copyTab[i] = copy(table1) end

View file

@ -0,0 +1,3 @@
1..3 | ForEach-Object {((Get-Date -Hour ($_ + (1..4 | Get-Random))).AddDays($_ + (1..4 | Get-Random)))} |
Select-Object -Unique |
ForEach-Object {$_.ToString()}

View file

@ -0,0 +1,3 @@
1..3 | ForEach-Object {((Get-Date -Hour ($_ + (1..4 | Get-Random))).AddDays($_ + (1..4 | Get-Random)))} |
Select-Object -Unique |
ForEach-Object {$_.ToString()}