Ruby

индекс
128,98

Мост Руби ⇋ Хаскелль

Вы — Руби-разработчик? После серии статей (1,2,3) про Хаскелль у вас появилось новое хобби? Вы бы хотели использовать это кунг-фу в своём коде? Нет?

Да!


Познакомьтесь, Hubris. Hubris — это мост между Руби и Хаскеллем, между любовью и зависимостью, между ленивой праздностью и грубой, невероятной скоростью. Hubris будет мыть вам машину, врать вашему начальнику и спасать вашу жизнь. А если вам достаточно повезёт, он, к тому же, добавит функциональных прелестей к вашему руби-коду. Через чёрный ход.

Вкратце — как пользоваться (более полная документация — в тестовых файлах):
require 'hubris' # самая отличная строчка
class Target
 hubris :inline =>"triple::Int->Int; triple n = 3*n"
end

t = Target.new
puts t.triple(10)
  => 30

* This source code was highlighted with Source Code Highlighter.


Есть несколько ограничений. Все функции принимают и возвращают не более одного аргумента. Это не должно быть проблемой: пользуйтесь массивами, если что. На данный момент Hubris умеет работать с числами, строками и базовыми типами (вроде nil, true и false).

Hubris откажетя компилировать хаскелль-код, который создаёт warning`и. Вы можете отказаться от этого требования, передав флаг ":no_strict => true", но в глубине души что-то не будет давать вам покоя: вы совершите не очень благородный поступок.

Кроме вышеописанных возможностей, хаскелль-код можно держать в отдельном файле, рядом с руби-кодом, и вызывать его вот таким образом:
hubris :source => "MyCoolModule.hs"

* This source code was highlighted with Source Code Highlighter.


Этой информации вам должно хватить для того, чтобы получить некоторое представление о Hubris`е, и захотеть поэкспериментировать. Если вы пропустили ссылку из начала топика, я её с радостью продублирую: вот она.

Изучайте Хаскелль ради Добра!
_________
Текст подготовлен в ХабраРедакторе
+14
1 декабря 2009, 13:00
4

комментарии (10)

+6
2kan #
фимоз
+3
folone #
Изволите парочку аргументов? Или вы говорите аксиомами?
+3
2kan #
Аксиомами :)

Хаскель это интересно. Я не против хаскеля. Я всего лишь хочу сказать, что нет ни одной причины писать этот бридж, кроме как just for fun. И нет ни одной причины использовать это в руби. Если хочется поиграться с Хаскелем, то стоит это делать на Хаскеле.
+3
folone #
Я тут вам написал отличный юз-кейс с блекджеком и vod-серверами, но под конец понял, что все прелести хаскелля упрутся в однопоточность рельс, и никакого особого выиграша в производительности не намечается. Потому я вынужден согласиться, что эта штука может использоваться только for fun.
0
semka #
Мама.
Нет, это круто очень, но пробовать я пока почему-то боюсь.
–1
folone #
А как же нездоровый авантюризм? :-)
0
iley #
Руби
грубой, невероятной скоростью
Что-то здесь не сходится.
0
folone #
это про хаскелль.
0
iley #
Ну тогда
Руби
ленивой праздностью
тоже странно.
0
folone #
тут слово «ленивый» не в том контексте, в котором вы его поняли. вот тут посмотрите.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.