lab419_core 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,31 +6,41 @@ class Integer
6
6
  def succ
7
7
  lambda{ |a| a.succ }
8
8
  end
9
- def sum
10
- -> *args do
9
+
10
+ Summer = -> *args do
11
11
  args.reduce{ |a,b| a + b }
12
12
  end
13
- end
14
- def diff
15
- -> a, b do
13
+ def sum; Summer end
14
+ alias_method :+, :sum
15
+
16
+ Differ = -> a, b do
16
17
  a - b
17
18
  end
18
- end
19
- def prod
19
+
20
+ def diff; Differ end
21
+ alias_method :-, :diff
22
+
23
+ Multiplier =
20
24
  -> *args do
21
25
  args.reduce{ |a,b| a * b }
22
26
  end
23
- end
24
- def div
27
+ def prod; Multiplier end
28
+ alias_method :*, :prod
29
+
30
+ Divisor =
25
31
  -> a, b do
26
32
  a / b
27
33
  end
28
- end
29
- def mod
34
+ def div; Divisor end
35
+ alias_method :/, :div
36
+
37
+ Modulator =
30
38
  -> a, b do
31
39
  a % b
32
40
  end
33
- end
41
+ def mod; Modulator end
42
+ alias_method :%, :mod
43
+
34
44
  end # class << self
35
45
  end # class Proc
36
46
 
@@ -0,0 +1,25 @@
1
+ class Module
2
+
3
+ def memoize *method_symbols
4
+ method_symbols.each do | method_symbol |
5
+ mthd = instance_method method_symbol
6
+ remove_method method_symbol
7
+ # The following two variables are the indicators it rests
8
+ # to be seen if including blocks into the memoization is
9
+ # indeed a good idea!
10
+ already_called = {}
11
+ results = {}
12
+ define_method method_symbol do |*args, &blk|
13
+ ac = already_called[[args,blk]]
14
+ # p called_with: [args,blk], ac?: ac
15
+ return results[[args,blk]] if already_called[[args,blk]]
16
+
17
+ already_called[[args,blk]] = true
18
+ # p set_ac: already_called[[args,blk]], for: [args,blk]
19
+ results[[args,blk]] = mthd.bind( self ).(*args, &blk)
20
+ end
21
+ end
22
+ self
23
+ end
24
+
25
+ end # class Module
@@ -1,5 +1,5 @@
1
1
  module Lab419
2
2
  module Core
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end # module Core
5
5
  end # module Lab419
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab419_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-21 00:00:00.000000000Z
12
+ date: 2012-05-06 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ruby-debug19
16
- requirement: &13038660 !ruby/object:Gem::Requirement
16
+ requirement: &74427640 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.11'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *13038660
24
+ version_requirements: *74427640
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &13033320 !ruby/object:Gem::Requirement
27
+ requirement: &74427380 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.9.2.2
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *13033320
35
+ version_requirements: *74427380
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &12886300 !ruby/object:Gem::Requirement
38
+ requirement: &74427130 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.9.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *12886300
46
+ version_requirements: *74427130
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: maruku
49
- requirement: &12219920 !ruby/object:Gem::Requirement
49
+ requirement: &74426860 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *12219920
57
+ version_requirements: *74426860
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: wirble
60
- requirement: &12217760 !ruby/object:Gem::Requirement
60
+ requirement: &74415330 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,22 +65,23 @@ dependencies:
65
65
  version: 0.1.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *12217760
68
+ version_requirements: *74415330
69
69
  description: Coming Soon
70
70
  email: robert.dober@gmail.com
71
71
  executables: []
72
72
  extensions: []
73
73
  extra_rdoc_files: []
74
74
  files:
75
- - lib/lab419/core/proc.rb
76
- - lib/lab419/core/kernel.rb
77
- - lib/lab419/core/integer.rb
78
- - lib/lab419/core/version.rb
79
75
  - lib/lab419/core/object.rb
76
+ - lib/lab419/core/array/flatten_once.rb
80
77
  - lib/lab419/core/integer/operators.rb
81
78
  - lib/lab419/core/integer/instance_methods.rb
79
+ - lib/lab419/core/memoization.rb
80
+ - lib/lab419/core/kernel.rb
81
+ - lib/lab419/core/proc.rb
82
82
  - lib/lab419/core/hash.rb
83
- - lib/lab419/core/array/flatten_once.rb
83
+ - lib/lab419/core/version.rb
84
+ - lib/lab419/core/integer.rb
84
85
  - LICENSE
85
86
  - README.md
86
87
  homepage: https://github.com/RobertDober/lab419
@@ -104,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  version: '0'
105
106
  requirements: []
106
107
  rubyforge_project:
107
- rubygems_version: 1.8.10
108
+ rubygems_version: 1.8.11
108
109
  signing_key:
109
110
  specification_version: 3
110
111
  summary: Making Ruby's Core more powerfull and convinient