rb-kgy-fp 1.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d187603140145361013f2277fb3d89ec9a2a49373a5b1d2d0839e48f9b53f48
4
- data.tar.gz: 1eb4b34145b0ac7ce815cd4c4d55e4f82bb10b3469705ff4dd28fcc5e80a00f0
3
+ metadata.gz: bd466fae2751a38d4024523d657941de41c887a63ad6309b90591c28a9992efe
4
+ data.tar.gz: 50b30e436d163ebc5cbaf1f8b7c615c49334063962a8c590dcb9a22f7d6446c6
5
5
  SHA512:
6
- metadata.gz: b4bfb2827314527f15092992d70c25332c703660a85c14f5038a0179667190c0773a9d0341a51ed78491a4119ab3fbc117bf954c2056090874360a128582ff75
7
- data.tar.gz: 1ddb718352d5eaf953c21280573b1086a00da7b0d627d46c1130f66f6db995df7985928f2c85f23115ec672b16553421b16c493ecff5554609e0e9e94c49acf6
6
+ metadata.gz: 5d0f8273997f98caad32cbe9d933c758b7573a7c185679ae41b8809830f349aa0b4090379cb0117702d258bb5e07b9bff81296de3c9d7dee32162b9405a1d971
7
+ data.tar.gz: bd2734c9d12abcbefdec6e03b2c3c59352b1ea9a07d4b07c6912c0328eb595f58720f50075c655c3501d6131d9f8c2c5524ee21baebe79646a908e69cf158507
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
3
+ require_relative 'special'
4
4
 
5
5
  PH = Special::PH
6
6
  OPT = Special::OPT
data/lib/rb-kgy-fp/fun.rb CHANGED
@@ -153,7 +153,7 @@ module Fun
153
153
  end
154
154
 
155
155
  def self.curry(&fn)
156
- require "special"
156
+ require_relative "special"
157
157
 
158
158
  req = 1 << 0
159
159
  opt = 1 << 1
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/trait/applicative'
3
+ require_relative '../special'
4
+ require_relative '../trait/applicative'
5
5
 
6
6
  module Alternative
7
7
  include Applicative
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "lib/special"
4
- require 'lib/fun'
5
- require 'lib/curry_fun'
6
- require 'lib/trait/functor'
3
+ require_relative "../special"
4
+ require_relative '../fun'
5
+ require_relative '../curry_fun'
6
+ require_relative '../trait/functor'
7
7
 
8
8
  module Applicative
9
9
  include Functor
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/fun'
3
+ require_relative '../special'
4
+ require_relative '../fun'
5
5
 
6
6
  module BiFunctor
7
7
  # implement require: bimap | (first, second)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/curry_fun'
3
+ require_relative '../special'
4
+ require_relative '../curry_fun'
5
5
 
6
6
  module Functor
7
7
  def fmap &fn
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/curry_fun'
5
- require 'lib/trait/applicative'
3
+ require_relative '../special'
4
+ require_relative '../curry_fun'
5
+ require_relative '../trait/applicative'
6
6
 
7
7
  module Monad
8
8
  include Applicative
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/trait/semi_group'
3
+ require_relative '../special'
4
+ require_relative '../trait/semi_group'
5
5
 
6
6
  module Monoid
7
7
  include SemiGroup
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/fun'
5
- require 'lib/curry_fun'
6
- require 'lib/trait/semi_group'
7
- require 'lib/trait/monad'
8
- require 'lib/trait/bi_functor'
3
+ require_relative '../special'
4
+ require_relative '../fun'
5
+ require_relative '../curry_fun'
6
+ require_relative '../trait/semi_group'
7
+ require_relative '../trait/monad'
8
+ require_relative '../trait/bi_functor'
9
9
 
10
10
  class Either
11
11
  include SemiGroup, Monad, Comparable, BiFunctor
@@ -16,6 +16,8 @@ class Either
16
16
 
17
17
  public
18
18
 
19
+ def inspect = to_s
20
+
19
21
  def initialize value
20
22
  @value = value
21
23
  end
@@ -43,9 +45,18 @@ class Either
43
45
  other.right? ? 1 : @value <=> other.value
44
46
  end
45
47
  end
48
+
49
+ def get
50
+ throw RuntimeError
51
+ end
52
+
53
+ def get_left
54
+ throw RuntimeError
55
+ end
46
56
  end
47
57
 
48
58
  class Left < Either
59
+
49
60
  def assoc other
50
61
  other
51
62
  end
@@ -67,7 +78,7 @@ class Left < Either
67
78
  end
68
79
 
69
80
  def to_s
70
- "Left(#{@value})"
81
+ "Left(#{@value.to_s})"
71
82
  end
72
83
 
73
84
  def either(map_left, _)
@@ -77,6 +88,10 @@ class Left < Either
77
88
  def bimap(map_fst, map_snd)
78
89
  Left.new map_fst.(@value)
79
90
  end
91
+
92
+ def get_left
93
+ @value
94
+ end
80
95
  end
81
96
 
82
97
  class Right < Either
@@ -101,7 +116,7 @@ class Right < Either
101
116
  end
102
117
 
103
118
  def to_s
104
- "Right(#{@value})"
119
+ "Right(#{@value.to_s})"
105
120
  end
106
121
 
107
122
  def either(_, map_right)
@@ -111,4 +126,8 @@ class Right < Either
111
126
  def bimap(map_fst, map_snd)
112
127
  of map_snd.(@value)
113
128
  end
129
+
130
+ def get
131
+ @value
132
+ end
114
133
  end
@@ -1,17 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/special'
4
- require 'lib/fun'
5
- require 'lib/curry_fun'
6
- require 'lib/trait/monad'
7
- require 'lib/trait/alternative'
3
+ require_relative '../special'
4
+ require_relative '../fun'
5
+ require_relative '../curry_fun'
6
+ require_relative '../trait/monad'
7
+ require_relative '../trait/alternative'
8
+ require 'singleton'
8
9
 
9
10
  class Maybe
10
11
  include Monad, Alternative, Comparable
11
12
 
12
- private
13
-
14
- public
13
+ def inspect = to_s
15
14
 
16
15
  def just?
17
16
  raise Special::UNIMPLEMENTED
@@ -36,14 +35,21 @@ class Maybe
36
35
  def self.empty
37
36
  Nothing.new
38
37
  end
39
-
38
+
40
39
  def consume(other)
41
40
  replace other
42
41
  end
42
+
43
+ def get
44
+ throw RuntimeError
45
+ end
43
46
  end
44
47
 
45
48
  class Just < Maybe
46
49
  attr_reader :value
50
+
51
+ def to_s = "Just(#{@value.to_s})"
52
+
47
53
  def initialize value
48
54
  @value = value
49
55
  end
@@ -80,9 +86,20 @@ class Just < Maybe
80
86
  fn.(@value)
81
87
  end
82
88
 
89
+ def get
90
+ @value
91
+ end
83
92
  end
84
93
 
85
94
  class Nothing < Maybe
95
+ include Singleton
96
+
97
+ def to_s = 'Nothing'
98
+
99
+ def self.of _ = nil
100
+ instance
101
+ end
102
+
86
103
  def just?
87
104
  false
88
105
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/trait/monad'
4
- require 'lib/fun'
5
- require 'lib/curry_fun'
3
+ require_relative '../trait/monad'
4
+ require_relative '../fun'
5
+ require_relative '../curry_fun'
6
6
 
7
7
  class Reader
8
8
  include Monad
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/trait/monad'
3
+ require_relative '../trait/monad'
4
4
 
5
5
  class State
6
6
  include Monad
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lib/trait/monad'
3
+ require_relative '../trait/monad'
4
4
 
5
5
  class Writer
6
6
  include Monad
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rb-kgy-fp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Lui
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-02 00:00:00.000000000 Z
11
+ date: 2023-09-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby FP lib for self usage. This lib included simple FP functions like
14
14
  Rmada of JS, and different typeclass support as Haskell
@@ -19,7 +19,6 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - lib/rb-kgy-fp/curry_fun.rb
21
21
  - lib/rb-kgy-fp/fun.rb
22
- - lib/rb-kgy-fp/lib.rb
23
22
  - lib/rb-kgy-fp/special.rb
24
23
  - lib/rb-kgy-fp/std_ext/array.rb
25
24
  - lib/rb-kgy-fp/std_ext/string.rb
@@ -38,7 +37,11 @@ files:
38
37
  homepage: https://github.com/phillui-37/rb-kgy-fp
39
38
  licenses:
40
39
  - MIT
41
- metadata: {}
40
+ metadata:
41
+ bug_tracker_uri: https://github.com/phillui-37/rb-kgy-fp/issues
42
+ change_log_uri: https://github.com/phillui-37/rb-kgy-fp/CHANGELOG.md
43
+ homepage_uri: https://github.com/phillui-37/rb-kgy-fp
44
+ source_code_uri: https://github.com/phillui-37/rb-kgy-fp
42
45
  post_install_message:
43
46
  rdoc_options: []
44
47
  require_paths:
@@ -54,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
57
  - !ruby/object:Gem::Version
55
58
  version: '0'
56
59
  requirements: []
57
- rubygems_version: 3.4.10
60
+ rubygems_version: 3.4.19
58
61
  signing_key:
59
62
  specification_version: 4
60
63
  summary: Ruby FP lib for self usage
data/lib/rb-kgy-fp/lib.rb DELETED
@@ -1 +0,0 @@
1
- # frozen_string_literal: true