Войти
ДельфинарийСтатьи

Haskell для Delphi

Автор:

  Установка
  Цели
  Описание
  Как это выглядит
  Планы

Установка


Для использования Haskell в своем delphi приложении нужно скачать
Haskell.pas + все dll + все src + минимальные packages + IDE (версия 1.6)
http://../hugide/

Полный набор пакетов можно скачать с официального сайта в составе установочного комплекта WinHugs.

Цели


Haskell - это самый красивый функциональный язык. В нем собранны все лучшие возможности функциональных языков, а его синтаксис максимально приближен к математической нотации и отполирован до блеска. Но на практике им никто не пользуется, так же как и всеми другими ФП.  Дело тут и в том что для функциональщины нужны гораздо более квалифицированные программисты, и в ограниченной скорости работы полученных приложений, и, наверно, самое главное - полное выпадение ФП из майнстрима, а как следствие отсутствие прикладной базы. В итоге, на чистом Хаскеле и Ко практически невозможно написать полезное приложение.

Если рассматривать последнее утверждение, то, как мне кажется, проблема в том, что разработчики компиляторов/интерпретаторов мнят свои детища центром вселенной. Они не допускают возможности интеграции ФП в популярные императивные языки. Максимум дают возможность писать dll для ФП-компилятора и то не все. То есть акценты расставлены таким образом, что главное приложение написано на ФП, а вспомогательные библиотеки написаны на чем угодно.
Как показывает практика, подобная политика ни к чему не приводит. Хотелось бы обратить ситуацию с точностью до наоборот. Что бы в обычное делфи приложение можно было максимально удобно включать некоторые куски функционального кода.

Описание


hug.dll - это хаскель интерпретатор, который можно подключить к своему приложению. За стартовую точку взят перекомпилированный в dll runhugs.exe из состава Hugs. По мере продвижения работы исходный си код меняется.

Haskell.pas - это заголовочный файл для библиотеки. В нем имеетя синглтон объект Hugs типа THugsAPI, публичные методы которого указаны ниже

 THugsAPI = class
 public
  property Active: boolean;
  //последняя ошибка
  property LastError: string;
  //Обновить модули
  function Reload: boolean;
  //загрузка модуля
  function LoadFile(fname: string): boolean;
  //выполнить команду
  function doIO(module,expr: string): boolean;
  //вернуть результат
  function GetOutput: string;
 end;

Как это выглядит

С помощью THugsAPI можно создать простой графический интерактивный интерпретатор хаскеля написав всего несколько строк кода


Изображение

Планы

Текущая функциональность не является конечной точкой, библиотека будет прорабатываться, увеличивая степень интеграции двух миров.

#Delphi, #haskell, #header, #wrapper

29 декабря 2008 (Обновление: 11 дек 2009)

Комментарии [8]