Git Product home page Git Product logo

ramda-ruby's Introduction

Ramda Ruby

This is a ruby version of Ramda Js library.

Gem Version Functions Travis badge AppVeyor status Coverage Status Code Climate Badge Inch CI Dependency Status License

Information

This library uses some stuff like curry and __ which reduces performance. Please review benchmarks section.

Installation

Add this line to your application's Gemfile:

gem 'ramda-ruby'

And then execute:

$ bundle

Or install it yourself as:

$ gem install ramda-ruby

And then require:

require 'ramda'

Documentation

You can use Ramda docs as a documentation or to check Ruby examples.

Algebraic structures

Methods which supports algebraic types:

  • ap
  • both
  • chain
  • complement
  • either
  • lift
  • lift_n
  • map
  • pluck

Supported libraries (comparison):

dry-monads

works with ruby >= 2.1

kleisli works from this fork:

gem 'kleisli', git: '[email protected]:lazebny/kleisli.git', branch: 'ramda-ruby'

Differences:

Usage

Pointless Style:

  R = Ramda

  players = [
    { name: 'Andrey', score: 100 },
    { name: 'Ivan', score: 200 },
    { name: 'Masha', score: 150 }
  ]

  best_player = R.pipe(R.sort_by(R.prop(:score)), R.reverse, R.head, R.prop(:name))
  best_player.call(players) # Ivan

Placeholder:

  reset_to_default = R.merge(R.__, x: 0)
  reset_to_default.call(x: 5, y: 2) # { x: 0, y: 2 }

Transducers:

  appender = R.flip(R.append)

  xform = R.map(R.add(10))
  R.transduce(xform, appender, [], [1, 2, 3, 4]) # [11, 12, 13, 14]

  xform = R.filter(:odd?.to_proc)
  R.transduce(xform, appender, [], [1, 2, 3, 4]) # [1, 3]

  xform = R.compose(R.map(R.add(10)), R.take(2))
  R.transduce(xform, appender, [], [1, 2, 3, 4]) # [11, 12]

  xform = R.compose(R.filter(:odd?.to_proc), R.take(2))
  R.transduce(xform, R.add, 100, [1, 2, 3, 4, 5]) # 104)
  R.transduce(xform, appender, [], [1, 2, 3, 4, 5]) # [1, 3])
  R.into([], xform, [1, 2, 3, 4, 5]) # [1, 3])

With algebraic structures:

  # ap
  R.ap(R.ap(Maybe.of(R.add), Maybe.of(3)), Maybe.of(5)) # Some(8)

  # chain
  R.chain(->(x) { Maybe.of(R.add(5, x)) }, Maybe.of(3)) # Some(8)

  # map
  R.map(R.add(3), Maybe.of(5)) # Some(8)

  # lift
  add_m = R.lift(R.add)
  add_m.call(Maybe.of(3), Maybe.of(5)) # Some(8)

  # lift_n
  add_m = R.lift_n(3, -> (a, b, c) { a + b + c })
  add_m.call(Maybe.of(3), Maybe.of(5), Maybe.of(10)) # Some(18)

Change exceptions handler:

  # To use a default 'with_narrow' handler:
  Ramda.exception_handler = nil
  # the same as:
  Ramda.exception_handler = -> Ramda::ExceptionHandler.method(:with_narrow)

  # Set a custom handler:
  Ramda.exception_handler = -> (e, _method_name) { raise e, e.exception, e.backtrace }
  # the same as:
  Ramda.exception_handler = -> Ramda::ExceptionHandler.method(:default)

Ramda in debug mode shows calls trace. Notice: trace is shown only for Ramda functions and not for regular procs. If you want to show a whole trace you can wrap your proc in Ramda.curry function (pleaes see example below).

Enable debug mode:

  Ramda.debug_mode = true

  # Example:

  Ramda.filter(Ramda.curry(:even?.to_proc, [1, 2, 3, 4])

  # -> curry(#<Proc:0x...@/srv/app/spec/ramda/list_spec.rb:130 (lambda)>) # #<Proc:0x... (lambda)>
  # -> curry(1) # false
  # -> curry(2) # true
  # -> curry(3) # false
  # -> curry(4) # true
  # -> filter(#<Proc:0x0055ff3fad4640 (lambda)>, 1, 2, 3, 4) # [2, 4]

Resources

Benchmarks

Send all results to STDOUT

bundle exec rake ramda:run_benchmark

Send one function type results to STDOUT

bundle exec rake ramda:run_benchmark[bench/list/*]

Update all files in bench_results

bundle exec rake ramda:run_benchmark_to_file

Update one type of function in bench_results

bundle exec rake ramda:run_benchmark_to_file[bench/list/*]

Development

You can use either regular approach with installing gems on local machine or with docker-compose which is handy when you are playing with ruby versions.

With docker-compose:

  1. Install Docker
  2. Install Docker Compose
  3. Run tests
touch .bashrc.docker .pry_history.docker
docker-compose run --rm app bash
bundle
rspec

To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Make changes
  4. Check with Rubocop and resolve all issues(rubocop -aD)
  5. Commit your changes (git commit -am 'Add some feature')
  6. Push to the branch (git push origin my-new-feature)
  7. Create new Pull Request

License

The gem is available as open source under the terms of the MIT License.

ramda-ruby's People

Contributors

lazebny avatar nav-mike avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ramda-ruby's Issues

Ruby interpreter crash

./bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:22: [BUG] Stack consistency error (sp: 341, bp: 340)
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0081 p:0098 s:0341 e:000339 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:22
c:0080 p:0014 s:0335 e:000334 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15 [FINISH]
c:0079 p:---- s:0330 e:000329 IFUNC
c:0078 p:---- s:0328 e:000327 CFUNC :call
c:0077 p:0014 s:0324 e:000322 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405 [FINISH]
c:0076 p:---- s:0319 e:000318 IFUNC
c:0075 p:---- s:0317 e:000316 CFUNC :each
c:0074 p:---- s:0315 e:000314 CFUNC :map
c:0073 p:0058 s:0312 e:000310 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405
c:0072 p:0089 s:0307 e:000306 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/dispatchable.rb:28
c:0071 p:0014 s:0302 e:000301 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15
c:0070 p:0058 s:0297 e:000296 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20
c:0069 p:0014 s:0292 e:000291 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15 [FINISH]
c:0068 p:---- s:0287 e:000286 IFUNC
c:0067 p:---- s:0285 e:000284 CFUNC :call
c:0066 p:0021 s:0281 e:000279 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379 [FINISH]
c:0065 p:---- s:0277 e:000276 CFUNC :call
c:0064 p:0026 s:0273 e:000272 METHOD /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups
c:0063 p:0063 s:0266 e:000265 METHOD /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups [FINISH]
c:0062 p:---- s:0255 e:000254 IFUNC
c:0061 p:0058 s:0253 e:000249 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20
c:0060 p:0016 s:0245 e:000244 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:17 [FINISH]
c:0059 p:---- s:0239 e:000238 IFUNC
c:0058 p:---- s:0237 e:000236 CFUNC :call
c:0057 p:0021 s:0233 e:000231 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379 [FINISH]
c:0056 p:---- s:0229 e:000228 CFUNC :map
c:0055 p:0073 s:0226 e:000225 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:407
c:0054 p:0089 s:0222 e:000221 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/dispatchable.rb:28
c:0053 p:0014 s:0217 e:000216 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15
c:0052 p:0058 s:0212 e:000211 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20
c:0051 p:0014 s:0207 e:000206 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15 [FINISH]
c:0050 p:---- s:0202 e:000201 IFUNC
c:0049 p:0111 s:0200 e:000199 METHOD /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups [FINISH]
c:0048 p:---- s:0191 e:000190 IFUNC
c:0047 p:0058 s:0189 e:000187 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20
c:0046 p:0012 s:0183 e:000182 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:13 [FINISH]
c:0045 p:---- s:0179 e:000178 IFUNC
c:0044 p:---- s:0177 e:000176 CFUNC :call
c:0043 p:0014 s:0173 e:000172 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260 [FINISH]
c:0042 p:---- s:0170 e:000169 CFUNC :map
c:0041 p:0010 s:0167 e:000166 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260
c:0040 p:0058 s:0162 e:000161 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20
c:0039 p:0014 s:0157 e:000156 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15 [FINISH]
c:0038 p:---- s:0152 e:000151 IFUNC
c:0037 p:---- s:0150 e:000149 CFUNC :call
c:0036 p:0012 s:0146 e:000145 BLOCK /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379 [FINISH]
c:0035 p:---- s:0142 e:000141 IFUNC
c:0034 p:---- s:0140 e:000139 CFUNC :each
c:0033 p:---- s:0138 e:000137 CFUNC :reduce
c:0032 p:0023 s:0134 e:000133 LAMBDA /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379 [FINISH]
c:0031 p:---- s:0131 e:000130 CFUNC :call
c:0030 p:0103 s:0127 e:000126 METHOD /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups
c:0029 p:0358 s:0123 e:000121 BLOCK /root/src/bitbucket.org/forgesp/exposure_workers/spec/exposure_db/events/scripts/calculations/calculate_movements_between_group [FINISH]
c:0028 p:---- s:0119 e:000118 CFUNC :instance_exec
c:0027 p:0021 s:0115 e:000114 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:236
c:0026 p:0006 s:0112 e:000111 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:477
c:0025 p:0006 s:0110 e:000109 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:434
c:0024 p:0006 s:0108 e:000107 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:478
c:0023 p:0030 s:0106 E:0014c0 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:616
c:0022 p:0115 s:0100 E:0013e0 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:478
c:0021 p:0014 s:0094 E:000ae0 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:434
c:0020 p:0026 s:0090 E:000370 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:477
c:0019 p:0139 s:0086 E:0011c0 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:233
c:0018 p:0054 s:0080 e:000079 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:581 [FINISH]
c:0017 p:---- s:0075 e:000074 CFUNC :map
c:0016 p:0014 s:0072 e:000071 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:577
c:0015 p:0079 s:0068 e:000067 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:543
c:0014 p:0010 s:0060 e:000059 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:544 [FINISH]
c:0013 p:---- s:0057 e:000056 CFUNC :map
c:0012 p:0093 s:0054 e:000053 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:544
c:0011 p:0011 s:0046 e:000045 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115 [FINISH]
c:0010 p:---- s:0043 e:000042 CFUNC :map
c:0009 p:0009 s:0040 e:000039 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115
c:0008 p:0046 s:0038 e:000037 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1680
c:0007 p:0009 s:0034 e:000033 BLOCK /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:114
c:0006 p:0017 s:0031 e:000030 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/reporter.rb:77
c:0005 p:0018 s:0027 e:000026 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:113
c:0004 p:0022 s:0023 e:000022 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:89
c:0003 p:0088 s:0018 e:000017 METHOD /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:73
c:0002 p:0232 s:0011 E:0026d0 EVAL bin/rspec:51 [FINISH]
c:0001 p:0000 s:0002 E:000748 TOP [FINISH]

-- Ruby level backtrace information ----------------------------------------
bin/rspec:51:in <main>' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:73:in run'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:89:in run' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:113:in run_specs'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/reporter.rb:77:in report' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:114:in block in run_specs'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1680:in with_suite_hooks' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115:in block (2 levels) in run_specs'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115:in map' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:115:in block (3 levels) in run_specs'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:544:in run' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:544:in map'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:544:in block in run' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:543:in run'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:577:in run_examples' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:577:in map'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example_group.rb:581:in block in run_examples' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:233:in run'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:477:in with_around_and_singleton_context_hooks' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:434:in with_around_example_hooks'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:478:in run' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:616:in run_around_example_hooks_for'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/hooks.rb:478:in block in run' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:434:in block in with_around_example_hooks'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:477:in block in with_around_and_singleton_context_hooks' /bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:236:in block in run'
/bundle_cache/gems/rspec-core-3.4.1/lib/rspec/core/example.rb:236:in instance_exec' /root/src/bitbucket.org/forgesp/exposure_workers/spec/exposure_db/events/scripts/calculations/calculate_movements_between_groups_spec.rb:81:in block (3 levels) in <top (required)>'
/root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:27:in call' /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:27:in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in block (2 levels) in <module:Function>' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in reduce'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in each' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in block (3 levels) in module:Function'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20:in block in curried_method_body' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260:in block in module:Function'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260:in map' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260:in block (2 levels) in module:Function'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:260:in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:13:in block in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20:in block in curried_method_body' /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:63:in event_statistics'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20:in block in curried_method_body'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/dispatchable.rb:28:in block in dispatchable'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:407:in block in <module:List>' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:407:in map'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in block (2 levels) in <module:Function>' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:17:in block in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20:in block in curried_method_body'
/root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:89:in statistics' /root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:123:in fetch_movements_count'
/root/src/bitbucket.org/forgesp/exposure_workers/lib/exposure_db/events/scripts/calculations/calculate_movements_between_groups.rb:123:in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in block (2 levels) in module:Function'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/function.rb:379:in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:20:in block in curried_method_body' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/dispatchable.rb:28:in block in dispatchable' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405:in block in module:List'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405:in map' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405:in each'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405:in block (2 levels) in <module:List>' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/list.rb:405:in call'
/bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/function_with_arity.rb:15:in block in call' /bundle_cache/gems/ramda-ruby-0.15.0/lib/ramda/internal/curried_method.rb:22:in block in curried_method_body'

-- C level backtrace information -------------------------------------------
/usr/local/lib/libruby.so.2.1(+0x1db1ac) [0x7ff6b22421ac] vm_dump.c:690
/usr/local/lib/libruby.so.2.1(+0x76433) [0x7ff6b20dd433] error.c:312
/usr/local/lib/libruby.so.2.1(rb_bug+0xb3) [0x7ff6b20de093] error.c:339
/usr/local/lib/libruby.so.2.1(+0x1cdcb2) [0x7ff6b2234cb2] insns.def:1084
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c9665) [0x7ff6b2230665] insns.def:1025
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield_values2+0x44) [0x7ff6b223a3d4] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x6c85e) [0x7ff6b20d385e] enum.c:397
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0xa1d71) [0x7ff6b2108d71] hash.c:1606
/usr/local/lib/libruby.so.2.1(+0xa2649) [0x7ff6b2109649] hash.c:227
/usr/local/lib/libruby.so.2.1(st_foreach_check+0xa5) [0x7ff6b21c5d65] st.c:956
/usr/local/lib/libruby.so.2.1(+0xa25ef) [0x7ff6b21095ef] hash.c:266
/usr/local/lib/libruby.so.2.1(rb_ensure+0xb0) [0x7ff6b20e64b0] eval.c:853
/usr/local/lib/libruby.so.2.1(rb_hash_foreach+0x36) [0x7ff6b210b596] hash.c:283
/usr/local/lib/libruby.so.2.1(+0xa5457) [0x7ff6b210c457] hash.c:1646
/usr/local/lib/libruby.so.2.1(+0x1cf45a) [0x7ff6b223645a] vm_eval.c:118
/usr/local/lib/libruby.so.2.1(+0x1d08b7) [0x7ff6b22378b7] vm_eval.c:50
/usr/local/lib/libruby.so.2.1(rb_iterate+0xed) [0x7ff6b222e3dd] vm_eval.c:1085
/usr/local/lib/libruby.so.2.1(rb_block_call+0x2b) [0x7ff6b222e5ab] vm_eval.c:1156
/usr/local/lib/libruby.so.2.1(+0x6d235) [0x7ff6b20d4235] enum.c:436
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c9665) [0x7ff6b2230665] insns.def:1025
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1cf36e) [0x7ff6b223636e] vm_eval.c:171
/usr/local/lib/libruby.so.2.1(+0x1d0717) [0x7ff6b2237717] vm_eval.c:50
/usr/local/lib/libruby.so.2.1(rb_method_call_with_block+0x16b) [0x7ff6b20ee8bb] proc.c:1831
/usr/local/lib/libruby.so.2.1(+0x87a97) [0x7ff6b20eea97] proc.c:2306
/usr/local/lib/libruby.so.2.1(+0x1cd39b) [0x7ff6b223439b] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x3503d) [0x7ff6b209c03d] array.c:2688
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2a57) [0x7ff6b2239a57] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2d82) [0x7ff6b2239d82] vm_insnhelper.c:1629
/usr/local/lib/libruby.so.2.1(+0x1d436e) [0x7ff6b223b36e] vm_insnhelper.c:1808
/usr/local/lib/libruby.so.2.1(+0x1c9665) [0x7ff6b2230665] insns.def:1025
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1cf36e) [0x7ff6b223636e] vm_eval.c:171
/usr/local/lib/libruby.so.2.1(+0x1d0717) [0x7ff6b2237717] vm_eval.c:50
/usr/local/lib/libruby.so.2.1(rb_method_call_with_block+0x16b) [0x7ff6b20ee8bb] proc.c:1831
/usr/local/lib/libruby.so.2.1(+0x87a97) [0x7ff6b20eea97] proc.c:2306
/usr/local/lib/libruby.so.2.1(+0x1cd39b) [0x7ff6b223439b] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x3503d) [0x7ff6b209c03d] array.c:2688
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(rb_proc_call_with_block+0x33) [0x7ff6b20ed9e3] proc.c:769
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c9665) [0x7ff6b2230665] insns.def:1025
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield_values+0x103) [0x7ff6b2239f23] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x6ff03) [0x7ff6b20d6f03] enum.c:563
/usr/local/lib/libruby.so.2.1(+0x1d2596) [0x7ff6b2239596] vm_insnhelper.c:2136
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(rb_ary_each+0x52) [0x7ff6b2094f72] array.c:1796
/usr/local/lib/libruby.so.2.1(+0x1cf45a) [0x7ff6b223645a] vm_eval.c:118
/usr/local/lib/libruby.so.2.1(+0x1d08b7) [0x7ff6b22378b7] vm_eval.c:50
/usr/local/lib/libruby.so.2.1(rb_iterate+0xed) [0x7ff6b222e3dd] vm_eval.c:1085
/usr/local/lib/libruby.so.2.1(rb_block_call+0x2b) [0x7ff6b222e5ab] vm_eval.c:1156
/usr/local/lib/libruby.so.2.1(+0x6cf10) [0x7ff6b20d3f10] enum.c:666
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d2b3b) [0x7ff6b2239b3b] vm.c:881
/usr/local/lib/libruby.so.2.1(+0x1d2c18) [0x7ff6b2239c18] vm.c:900
/usr/local/lib/libruby.so.2.1(+0x85fa2) [0x7ff6b20ecfa2] proc.c:724
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c9665) [0x7ff6b2230665] insns.def:1025
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(+0x1d3245) [0x7ff6b223a245] vm.c:848
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x3503d) [0x7ff6b209c03d] array.c:2688
/usr/local/lib/libruby.so.2.1(+0x1c54bc) [0x7ff6b222c4bc] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x3503d) [0x7ff6b209c03d] array.c:2688
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(+0x1d2621) [0x7ff6b2239621] vm.c:817
/usr/local/lib/libruby.so.2.1(rb_yield+0x5d) [0x7ff6b223a43d] vm.c:856
/usr/local/lib/libruby.so.2.1(+0x3503d) [0x7ff6b209c03d] array.c:2688
/usr/local/lib/libruby.so.2.1(+0x1d4232) [0x7ff6b223b232] vm_insnhelper.c:1510
/usr/local/lib/libruby.so.2.1(+0x1c95c8) [0x7ff6b22305c8] insns.def:996
/usr/local/lib/libruby.so.2.1(+0x1cde38) [0x7ff6b2234e38] vm.c:1427
/usr/local/lib/libruby.so.2.1(rb_iseq_eval_main+0x212) [0x7ff6b223d0c2] vm.c:1666
/usr/local/lib/libruby.so.2.1(+0x7c70f) [0x7ff6b20e370f] eval.c:253
/usr/local/lib/libruby.so.2.1(ruby_exec_node+0x1d) [0x7ff6b20e587d] eval.c:318
/usr/local/lib/libruby.so.2.1(ruby_run_node+0x1e) [0x7ff6b20e7fbe] eval.c:310
ruby() [0x40087b]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7ff6b1384b45]
ruby() [0x4008a9]

...

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

/root/c935ca63-47f3-463a-a20f-94a66d31167c.sh: line 73: 4401 Aborted (core dumped)

Exception messages in R.curry'd lamdas

I.e the curry -> prefix that all exceptions raised from a lamda that's wrapped in a R.curry get extra. If you render error messages (for example from client validations) to clients then this curry -> is something you need to handle everywhere you add a R.curry call, it'll cause issues, it's something to think about

Btw, I'm very excited about this, I'm adopting it on a couple chosen low-intensity controllers in an application I have live <3

Improve error backtrace

Currently backtrace isn't very useful:

people = [{name: 'Ivan'}, {name: 'Masha'}]
Ramda.pipe(Ramda.head, Ramda.pluck(:name)).call(people)
# TypeError: no implicit conversion of Symbol into Integer
# from /srv/app/lib/ramda/list.rb:217:in `[]'

Find out a way how to improve it.

Add performace benchmarks

Need to compare performance of code written in Ramda with plain ruby code.

Good place to start:

  • from list: map, filter, reduce, sort
  • from function: pipe, compose

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.