Skip to content

Commit e03ad0f

Browse files
committed
Feature/Parity: Add fp:apply
1 parent 7612510 commit e03ad0f

3 files changed

Lines changed: 16 additions & 0 deletions

File tree

engine/src/main/coffee/extensions/fp.coffee

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ iterateForLast = (f, initialValue, repetitions) ->
131131

132132
result
133133

134+
apply = (f, values) ->
135+
f(values...)
136+
134137
module.exports = {
135138

136139
porter: undefined
@@ -150,6 +153,7 @@ module.exports = {
150153
, flatten
151154
, "iterate": iterateToList
152155
, "iterate-last": iterateForLast
156+
, apply
153157
}
154158
Object.keys(prims).forEach( (p) => prims[p.toUpperCase()] = prims[p] )
155159
{ name: "fp", prims }

engine/src/main/coffee/extensions/fp.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,10 @@
7474
, "argTypes": ["reporter", "wildcard", "number"]
7575
, "returnType": "wildcard"
7676
}
77+
, {
78+
"name": "apply"
79+
, "argTypes": ["reporter", "list"]
80+
, "returnType": "wildcard"
81+
}
7782
]
7883
}

resources/test/commands/Fp.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,10 @@ Flatten
108108
fp:flatten [1 2 3 4 5 6] => [1 2 3 4 5 6]
109109
fp:flatten [] => []
110110
fp:flatten [[] []] => []
111+
112+
Apply
113+
extensions [fp]
114+
fp:apply [[a b] -> a + b] [10 5] => 15
115+
map [l -> fp:apply [[a b] -> a + b] l] [[10 5] [6 8] [9 22]] => [15 14 31]
116+
map [l -> fp:apply word l] [[1 2 3] [4 5] [6 7 8 9]] => ["123" "45" "6789"]
117+
fp:apply [[a b] -> a + b] [10] => ERROR anonymous procedure expected 2 inputs, but only got 1

0 commit comments

Comments
 (0)