[Haskell] Basic rules!
От: geniepro http://geniepro.livejournal.com/
Дата: 13.02.09 04:19
Оценка: 14 (3) :)))
Тут утверждают время от времени, что мол якобы на Хаскелле ирудно писать императивно.
Ну, с помощью новейшей библиотеки для компилятора GHC можно прямо в код на Хаскелле вставлять вставки на бейсике!

Language.BASIC: A simplified version of the original BASIC embedded in Haskell.

Спасибо господину Леннарту Аугустссону за то, что он очень сильно облегчил работу императивным программистам на Хаскелле!

Пример кода:
{-# OPTIONS_GHC -fno-warn-type-defaults #-}
{-# LANGUAGE ExtendedDefaultRules, OverloadedStrings #-}
module HiLo where
import Language.BASIC

main :: IO ()
main = runBASIC $ do
    10 GOSUB 1000
    20 PRINT "* Welcome to HiLo *"
    30 GOSUB 1000

    100 LET I := INT(100 * RND(X))
--    110 PRINT I
    200 PRINT "Guess my number:"
    210 INPUT X
    220 LET S := SGN(I-X)
    230 IF S <> 0 THEN 300

    240 FOR X := 1 TO 5
    250  PRINT X*X;" You won!"
    260 NEXT X
    270 STOP

    300 IF S <> 1 THEN 400
    310 PRINT "Your guess ";X;" is too low."
    320 GOTO 200

    400 PRINT "Your guess ";X;" is too high."
    410 GOTO 200

    1000 PRINT "*******************"
    1010 RETURN

    9999 END


PS. Кстати, производительность этого бейсика примерно на уровне Си (GCC) получилась...
Re: [Haskell] Basic rules!
От: geniepro http://geniepro.livejournal.com/
Дата: 13.02.09 04:24
Оценка:
Это было к вопросу о том, нужны ли макросы для построения eDSL или достаточно мощной системы типов...
Re: [Haskell] Basic rules!
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.02.09 05:49
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Спасибо господину Леннарту Аугустссону за то, что он очень сильно облегчил работу императивным программистам на Хаскелле!


Какбы... боян
Автор: Курилка
Дата: 06.02.09
, но за ссылку на пакет — данке!
Re[2]: [Haskell] Basic rules!
От: thesz Россия http://thesz.livejournal.com
Дата: 13.02.09 09:36
Оценка:
G>Это было к вопросу о том, нужны ли макросы для построения eDSL или достаточно мощной системы типов...

Отвал башки, просто.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: [Haskell] Basic rules!
От: palm mute  
Дата: 13.02.09 09:50
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Это было к вопросу о том, нужны ли макросы для построения eDSL или достаточно мощной системы типов...

Нужны. Использовать перегруженные а) числовые и б) строковые литералы для того, чтобы получить а) нумерацию строк б) возможность использовать точку с запятой в строчках вида 250 PRINT X*X;" You won!" — очень остроумный хак, но это тот случай, когда написать парсер проще.
Re[3]: [Haskell] Basic rules!
От: Курилка Россия http://kirya.narod.ru/
Дата: 13.02.09 09:57
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Здравствуйте, geniepro, Вы писали:


G>>Это было к вопросу о том, нужны ли макросы для построения eDSL или достаточно мощной системы типов...

PM>Нужны. Использовать перегруженные а) числовые и б) строковые литералы для того, чтобы получить а) нумерацию строк б) возможность использовать точку с запятой в строчках вида 250 PRINT X*X;" You won!" — очень остроумный хак, но это тот случай, когда написать парсер проще.

Это справедливо, если рассматривать необходимость построения eDSL с произвольным синтаксисом, стоит ли овчинка выделки — вопрос...
Причём я не уверен, что их (DSL) можно сделать именно как eDSL, не вынося код в строки или что-нибудь подобное (почти теряя бесшовность "склейки", если не брать eval из динамически-типизированных языков).
Re: [Haskell] Basic rules!
От: Аноним  
Дата: 13.02.09 10:40
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Ну, с помощью новейшей библиотеки для компилятора GHC можно прямо в код на Хаскелле вставлять вставки на бейсике!


Выпал в осадок. Аб. бал. деть.
Re: [Haskell] Basic rules!
От: Tonal- Россия www.promsoft.ru
Дата: 18.02.09 05:25
Оценка:
Оно конечно класно, но не более как пример что "и так могём".

А вот что было бы реально востребовано — это SQL.
Совершенно замечательно — пишем SQL запрос, который отдаёт список туплов (или структур).
Причём с возможностью изменять диалекты в зависимости от конкретного сервера.
Ну и драйверы к этому для всех распространённых RDBMS а не только для ODBC и SQLite как в HDBC.
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.