Hilbert
Do you know the one best language in this world?
I believe mathematics(logic) is absolutely that one.
How can we deal something as great as mathematics in a discrete world?
Hilbert is the answer.
Hilbert lets you have a sense of mathematics using a keyboard, the same as you would with a pen.
+---Discrete world---+ +------Mathematics-------+
| Ruby | | axiom |
| TeX |<---- Hilbert ---->| Uncountable noun |
| Python | | real number topology |
+--------------------+ +------------------------+
Demo
The code below is input and output for the Hilbert interpreter
(you can try it by hilbert -i
)
Logic
P -> Q
Q -> R
(P -> R)?
=> TRUE
P | Q # P or Q
~P # not P
Q? # Q is TURE?
=> TURE
Differentiate
d/dx(cos(x))
=> ( - sin( x ) )
# You can omit parentheses
d/dx log(x)
=> ( 1 / x )
d/dy xy
=> ( x )
d/dx e^x
=> e ^ x
Integrate
S(log(x)dx)[0..1]
=> - oo
S(sin(x)dx)[0..pi]
=> 2.0
S(cos(x)dx)[0..pi]
=> 0.0
Limit
lim[x->oo] (1 + 1/x)^x
=> 2.7182682371744895
lim[x->0] 1/x
=> oo
Sigma
∑[x=0,10] x
=> 55.0
Matrix
(1 2 3; 4 5 6)
=> (1 2 3; 4 5 6)
(1 2 3; 4 5 6) + (1 2 3; 4 5 6)
=> (2 4 6; 8 10 12)
(1 2 3; 4 5 6) * (1 2 3)
=> (14 32)
Function
f(x, y) = xy
f(1, 2)
=> 2
How to use
Install hilbert gem.
$ gem install hilbert
Interpreter
$ hilbert -i
Enjoy! ->
Use as native language
Compile into R
$ hilbert -r foo.hr
Compile into Ruby
$ hilbert -rb foo.hr
Compile into Python
$ hilbert -py foo.hr
Use as math template within other langs
class ExampleClass
def example_method
#your Ruby codes
......
I love mathematics.
a = (1 3 4)
# your Hilbert codes
Q.E.D
end
end
$ hilbert -rb example.rb
class ExampleClass
def example_method
#your Ruby codes
......
a = Vector[1, 3, 4]
end
end
Contributing
Any PRs or issues are welcome. (Please make to develop
branch)
You can become a commiter, even if you only commit once.