Форум по операционной системе GNU/Linux и свободному программному обеспечению
Текущее время: 12 ноя 2018, 21:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Haskell
Непрочитанное сообщениеДобавлено: 19 фев 2014, 18:42 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Ещё один стандартизованный чисто функциональный язык - Haskell.

Одна из доступных из репозитариев реализация Haskell под Linux - GHC:
Код:
    $ yum list ghc
    Доступные пакеты
    ghc.i686                       7.6.3-18.3.fc20                                           updates
    $ sudo yum install ghc
    ...
    Установить  1 пакет (+47 зависимых)
    Объем загрузки: 82 M
    Объем изменений: 610 M
    ...
    Установлено:
      ghc.i686 0:7.6.3-18.3.fc20
    $ ghc --version
    The Glorious Glasgow Haskell Compilation System, version 7.6.3

Как видите, объём изменений эта инсталляция потянет значительный.

В качестве проверки работоспособности того, что получилось, можете использовать приложение (там же показаны способы комментирования):
Код:
module Main where
import System.Environment

main :: IO ()

-- сама программа
main = do
     args <- getArgs  {- вложенный комментарий -}
     putStrLn( "Привет от Haskell, " ++ args !! 0 )


Код:
bash-4.2$ ghc -o hello_hs hello_hs.hs
[1 of 1] Compiling Main             ( hello_hs.hs, hello_hs.o )
Linking hello_hs ...
bash-4.2$ ./hello_hs Вася
Привет от Haskell, Вася


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 19 фев 2014, 18:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Ещё один стандартизованный чисто функциональный язык - Haskell.


Описаний и статей много ... но они какие-то бестолковые :-o :

Haskell
Язык Haskell: О пользе и вреде лени
Язык и библиотеки Haskell 98
Haskell 2010. Language Report

Но чтобы начать писать приложения на Haskell - этого достаточно (здесь и описание языка, и его библиотеки...)


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 09 мар 2014, 12:30 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Описаний и статей много ... но они какие-то бестолковые :-o :


По Haskell только-только выложена автором очень классная книга (PDF, очень советую скачать пока лежит ;-) ):
Цитата:
Денис Шевченко
О Haskell по-человечески для обыкновенных программистов
март 2014

Цитата:
В частности, в отношении Haskell бытует мнение о чрезвычайной, пря­мо-таки фантастической сложности его освоения. И всё-таки я повторю: в этом
языке меня поразила его простота. Но простота эта особенная, и скоро вы пой­мёте, что я имею в виду.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 09 мар 2014, 15:54 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
По Haskell только-только выложена автором очень классная книга (PDF, очень советую скачать пока лежит ;-) ):
Цитата:
Денис Шевченко
О Haskell по-человечески для обыкновенных программистов
март 2014



Давно имел намерение сесть посерьёзнее разобраться с Haskell. Теперь есть возможность и желание.
Код:
bash-4.2$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.6.3

Можно, конечно, (и достаточно) всё компилировать вручную, типа:
Код:
bash-4.2$ ghc -o hello_hs hello_hs.hs
[1 of 1] Compiling Main             ( hello_hs.hs, hello_hs.o )
Linking hello_hs ...
bash-4.2$ ./hello_hs Вася
Привет от Haskell, Вася

(кстати, сразу убеждаемся, что Haskell, похоже, замечательно справляется с Unicode UTF-8, чего не скажешь про некоторые другие языки).

В пакете устанавливается и диалоговый интерпретатор:
Код:
[root@localhost haskell]# ghci
GHCi, version 7.6.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> 2+2
4
Prelude> ^D
Leaving GHCi.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 09 мар 2014, 22:55 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Можно, конечно, (и достаточно) всё компилировать вручную, типа:
Код:
bash-4.2$ ghc -o hello_hs hello_hs.hs
[1 of 1] Compiling Main             ( hello_hs.hs, hello_hs.o )
Linking hello_hs ...
bash-4.2$ ./hello_hs Вася
Привет от Haskell, Вася



Но Haskell — это целая своеобразная технология, и обидно не использовать все возможности этой технологии, а делать ручную компиляцию...
В этой технологии есть ещё такая штука как cabal (Common Architecture for Building Applications and Libraries). Говорят, что это нечто типа make в мире C/C++ (я бы сравнил скорее с Cmake) — построитель проектов Haskell.
Но cabal придётся устанавливать отдельно:

Код:
$ yum list cabal*
Загружены модули: langpacks, refresh-packagekit
Доступные пакеты
cabal-dev.i686                     0.9.2-2.fc20                                      fedora
cabal-install.i686                 1.16.0.2-27.fc20                                  updates
cabal-rpm.i686                     0.8.7-1.fc20                                      updates
$ sudo yum install cabal*
...
Установить  3 пакета (+13 зависимых)
Объем загрузки: 1.7 M
Объем изменений: 9.1 M
...
Выполнено!


Кроме того, что это инструмент построения собственных модульных проектов, это мощнейшее средство управления модулями (библиотеками) Haskell :
Код:
$ cabal --help
...
Commands:
  install      Installs a list of packages.
  update       Updates list of known packages
  list         List packages matching a search string.
  info         Display detailed information about a particular package.
  fetch        Downloads packages for later installation.
  unpack       Unpacks packages for user inspection.
  check        Check the package for common mistakes
  sdist        Generate a source distribution file (.tar.gz).
  upload       Uploads source packages to Hackage
  report       Upload build reports to a remote server.
  init         Interactively create a .cabal file.
  configure    Prepare to build the package.
  build        Make this package ready for installation.
  copy         Copy the files into the install locations.
  haddock      Generate Haddock HTML documentation.
  clean        Clean up after a build.
  hscolour     Generate HsColour colourised code, in HTML format.
  register     Register this package with the compiler.
  test         Run the test suite, if any (configure with UserHooks).
  bench        Run the benchmark, if any (configure with UserHooks).
  upgrade      (command disabled, use install instead)
  help         Help about commands
...

Код:
$ cabal update
Downloading the latest package list from hackage.haskell.org
Note: there is a new version of cabal-install available.
To upgrade, run: cabal install cabal-install

С помощью cabal можто найти, выбрать и установить любой модуль (библиотеку) из главного мирового репозитория Haskell (его называют Hackage):
Код:
$ cabal list complex
* complex-generic
    Synopsis: complex numbers with non-mandatory RealFloat
    Default available version: 0.1.1
    Installed versions: [ Not installed ]
    Homepage: https://gitorious.org/complex-generic
    License:  BSD3

* complex-integrate
    Synopsis: A simple integration function to integrate a complex-valued
              complex functions
    Default available version: 1.0.0
    Installed versions: [ Not installed ]
    Homepage: https://github.com/hijarian/complex-integrate
    License:  PublicDomain

* complexity
    Synopsis: Empirical algorithmic complexity
    Default available version: 0.1.3
    Installed versions: [ Not installed ]
    License:  BSD3

* storable-complex
    Synopsis: Storable instance for Complex
    Default available version: 0.2.1
    Installed versions: [ Not installed ]
    License:  BSD3


Библиотека Haskell очень обширна (1-я команда выведет полный листинг библиотеки):
Код:
$ cabal list >> cabal.lst
$ ls -l cabal.lst
-rw-rw-r--. 1 Olej Olej 1273606 мар  9 11:40 cabal.lst
$ wc -l cabal.lst
41520 cabal.lst

Учитывая, что информация о каждом модуле выводится в 6 строк (см. выше) — это даёт объём библиотеки в 6920 единиц компиляции.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 14 мар 2014, 11:57 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
(кстати, сразу убеждаемся, что Haskell, похоже, замечательно справляется с Unicode UTF-8, чего не скажешь про некоторые другие языки).


Писать на Haskell, и даже поверхностно воспринимать написанное, с непривычки - трудно.
Кое-что, относительно написания небольшого приложения на Haskell - обсуждается здесь: сравнение языков программирования.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 02 сен 2014, 14:47 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Haskell support for Eclipse

Last Updated 2014-07-22
Цитата:
We extend the Eclipse IDE with tools for development in Haskell, ...


Сайт: EclipseFP The Haskell plug-in for Eclipse
Цитата:
If you want to try EclipseFP follow the installation instructions.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 17 фев 2017, 21:14 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Решение ООП-задач на языке Haskell
Цитата:
Как-то однажды знаменитый учитель Кх Ан вышел на прогулку с учеником Антоном. Надеясь разговорить учителя, Антон спросил: «Учитель, слыхал я, что объекты — очень хорошая штука — правда ли это?» Кх Ан посмотрел на ученика с жалостью в красных от боли глазах и ответил: «Глупый ученик! Объекты — всего лишь замыкания для бедных.»

Пристыженный Антон простился с учителем и вернулся в свою келью, горя желанием как можно скорее изучить замыкания. Он внимательно прочитал все статьи из серии «Lambda: The Ultimate», и родственные им статьи, и написал небольшой интерпретатор Scheme с объектно-ориентированной системой, основанной на замыканиях. Он многому научился, и с нетерпением ждал случая сообщить учителю о своих успехах.

Во время следующей прогулки с Кх Аном, Антон, пытаясь произвести хорошее впечатление, сказал: «Учитель, я прилежно изучил этот вопрос, и понимаю теперь, что объекты — воистину замыкания для бедных.» В ответ Кх Ан яростно огрел Антона палкой и воскликнул: «Когда же ты чему-то научишься, бездарь? Замыкания — это объекты для бедных!»

В эту же секунду Антон обрел просветление.

:lol:
Дальше там почитаете...


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Haskell
Непрочитанное сообщениеДобавлено: 27 окт 2018, 13:42 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 11294
Откуда: Харьков
Olej писал(а):
Описаний и статей много ... но они какие-то бестолковые :-o :

По Haskell мало хороших описаний. Поэтому особо нужно отметить:
Вложение:
photo_2018-10-27_13-39-35.jpg
photo_2018-10-27_13-39-35.jpg [ 121.74 КБ | Просмотров: 21 ]

Книгу можете свободно скачать здесь (Telegram) : https://t.me/itliba/858


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.342s | 19 Queries | GZIP : On ]