MLL (Mathematica Language Library)

What

Этот гем не ставит перед собой цель полностью имитировать типы данных, синтаксис Wolfram Mathematica Language, или научить Ruby крутым визуализациям. Целью является вложить в Ruby мощь стандартной библиотеки. В перспективе визуализация возможна при помощи других гемов.

Why

  1. Важной является реализация https://reference.wolfram.com/language/ref/Listable.html: автоматическое применение функции ко всем элементам аргумента, если тот является List-ом (Array-ем в среде Ruby).
  2. ::range, в отличие от рубишного, может иметь отрицательный step.
  3. ::table, в отличие от рубишного .map, может создавать многомерные массивы одним вызовом, а не только вложенными.

How

MLL::range(2, 3)   #=> 2..3
MLL::range([2, 3]) #=> [1..2, 1..3]
MLL::range(1..3)   #=> [1..1, 1..2, 1..3]

MLL::table ->(i,j){ i+j }, [[1, 0, 1]], [[0, 2, 0]]
#=> [[1, 3, 1],
     [0, 2, 0],
     [1, 3, 1]]
MLL::table ->(i,j,k){ 100*i + 10*j + k }, 2, 3, 4
# => [[[111, 112, 113, 114], [121, 122, 123, 124], [131, 132, 133, 134]],
      [[211, 212, 213, 214], [221, 222, 223, 224], [231, 232, 233, 234]]]

Installation

$ gem install mll

Testing with RSpec before contributing

rspec

or

rake