functions 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/functions/prelude_lambda/basic.rb +12 -1
- data/lib/functions/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OTNkN2M4ZGQwZmUwZmJiNGE4Y2U3ZjViMTZlZTEwNDllNDFiMTZmMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWEwYmJjNWY2NDVkZDc1NTkwNjZiNzBkY2NmNDc1NGZhMGZlOGNiMg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ODcyOTczYTFkMDhkN2VlNzg0MWYwOWU5MjhjMjJiMzkwYWEyYTczZGZjMDlm
|
10
|
+
ODdiZjhkMTM4MmFiODVmZjc3ZmMwNGVlM2UzYWUxMzBkMTRiMzI5YzJlZTYz
|
11
|
+
ZTgyYzViNjIxM2ZlNzdkY2E0M2MzNmEwOTgwYWRhZDQ0OGMxM2I=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZmJlMGVlMDlmMDU1MTgwMmYwMTAzMWNjNDA4ODYwYWYzYmU3MDQ3ODVjMDI4
|
14
|
+
YzFlYjNjZTEyNzllMzA4M2U3ZmI0M2QyYjZjMWUzM2ExOWUzY2Y1NDNkNjNk
|
15
|
+
ZjJmMTQwMzFiMzZmNmMxMTQ1OTY3N2VjYzM5MzdkYzRiNGQ1MTI=
|
@@ -71,7 +71,6 @@ module Functions
|
|
71
71
|
# Returns the length
|
72
72
|
Length = Send.(:length)
|
73
73
|
|
74
|
-
#
|
75
74
|
Foldl = ->(f, i, a) { a.inject(i) { |r, x| f.(r, x) } }.curry
|
76
75
|
|
77
76
|
ReduceLeft = ->(f, a) { a.inject { |r, x| f.(r, x) } }.curry
|
@@ -84,6 +83,8 @@ module Functions
|
|
84
83
|
|
85
84
|
Map = ->(f, a) { a.map { |x| f.(x) } }.curry
|
86
85
|
|
86
|
+
Map_Hash = ->(f, h) { Hash[h.map{|k, v| [k, f.(v)] }] }.curry
|
87
|
+
|
87
88
|
Filter = ->(f, xs) { xs.select { |x| f.(x) } }.curry
|
88
89
|
|
89
90
|
Parallel = ->(f, g, x) { [f.(x), g.(x)] }.curry
|
@@ -92,10 +93,20 @@ module Functions
|
|
92
93
|
|
93
94
|
Intersect = ->(as) { as.inject(:&) }
|
94
95
|
|
96
|
+
Group_By = ->(f,a) { a.group_by(&f) }.curry # functional friend
|
97
|
+
|
98
|
+
Partition_By = ->(f) { Group_By.(f) >= Send.(:values) } # functional friend
|
99
|
+
|
95
100
|
FromTo = ->(from) { ->(to) { Range.new(from, to) } }
|
96
101
|
|
97
102
|
FromOneTo = FromTo.(1)
|
98
103
|
|
104
|
+
Count_By = ->(f,a) { a.inject( Hash.new(0) ) { |h,e| h[f.(e)] += 1; h } }.curry
|
105
|
+
# count_by = ->(f) { group_by.( f ) >= map_hash.( send.(:length) ) }
|
106
|
+
|
107
|
+
Count = ->(a) { a.inject( Hash.new(0) ) { |h,e| h[e] += 1; h } } # probably a bit faster
|
108
|
+
# count = count_by.(identity) # alternative definition (generic)
|
109
|
+
|
99
110
|
end
|
100
111
|
|
101
112
|
end
|
data/lib/functions/version.rb
CHANGED