Jump to content

Объятия (переводчик)

Обнимаю 98
Разработчик(и) Марк П. Джонс и другие
Финальный выпуск
сентябрь 2006 г. / 21 сентября 2006 г .; 17 лет назад ( 21 сентября 2006 )
Операционная система Кросс-платформенный
Предшественник Гофер
Тип Компилятор
Лицензия БСД
Веб-сайт www .haskell .org /обнимает

Hugs ( Haskell User's Gofer System , также Hugs 98 байт-кода интерпретатор функционального ) языка программирования Haskell . Hugs является преемником Gofer и изначально был создан на основе Gofer версии 2.30b. [1] Hugs и Gofer изначально были разработаны Марком П. Джонсом, ныне профессором Портлендского государственного университета .

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

Hugs отличается от спецификации Haskell 98 [2] несколькими незначительными способами. [3] Например, Hugs не поддерживает взаимно рекурсивные модули. Список различий существует. [4]

Приглашение Hugs представляет собой цикл чтения-оценки-печати Haskell (REPL). Он принимает выражения для оценки, но не определения модулей, типов или функций. Hugs может загружать модули Haskell при запуске. [5]

Расширяемые записи

[ редактировать ]

Пример «Типизированных записей с возможностью расширения», нестандартной функции, уникальной для Hugs. [6]

module Main where

import Hugs.Trex

type Coord = Double
type Point2D = Rec (x::Coord, y::Coord) 
type Point3D = Rec (x::Coord, y::Coord, z::Coord)

point2D = (x=1, y=1) :: Point2D

-- emptyRec :: Rec EmptyRow  -- predefined

-- (x=1 | (y=1))   -- rec. extension
-- (x=v | rec)     -- record value decomposition, pattern fields must be non empty
-- (x::type | rec)   -- record type decomposition

-- (rec\z) in the context means ''rec'' does not contain field ''z''

-- add a field z with the same type as field x
addZCoord :: (r\z, r\x) => t -> Rec ( x::t | r) -> Rec ( x::t, z::t | r)
addZCoord z ( x = x | other) = (x = x, z = z | other)

point3D = addZCoord 3 point2D   -- :: Point3D

-- admit any record with ''showable'' fields x and y 
printXY :: (Show t, r\x, r\y) => Rec (x::t, y::t | r) -> IO ()
printXY point = putStrLn xy
  -- with SML style field accessors ('#' prefix)
  where xy = show (#x point) ++", "++ show (#y point)

incrementX :: (Num t, r\x) => Rec (x::t | r) -> Rec (x::t | r)
incrementX  (x=v | rest) = (x=v+1 | rest)

main = do
  let point3D' = incrementX point3D
  printXY point2D
  printXY point3D'

Запуск с отключенной совместимостью H98 для активации языковых расширений: [7]

runhugs -98 test.hs
  1. ^ «Часто задаваемые вопросы об объятиях» . Проверено 4 августа 2006 г.
  2. ^ Пейтон Джонс, Саймон , изд. (декабрь 2002 г.). Язык Haskell 98 и библиотеки: Пересмотренный отчет (Отчет) . Проверено 3 августа 2006 г.
  3. ^ «Несоответствие Haskell 98» . Руководство пользователя Hugs 98 . Проверено 4 августа 2006 г.
  4. ^ «Список отличий от стандарта H98» .
  5. ^ «Загрузка и редактирование файлов модуля Haskell» . Руководство пользователя Hugs 98 . Проверено 4 августа 2006 г.
  6. ^ «Расширения языка, специфичные для объятий» . www.haskell.org .
  7. ^ «Изменение поведения Объятий» . www.haskell.org .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 41425dcada05ed74a451f9b8abde92a9__1711031280
URL1:https://arc.ask3.ru/arc/aa/41/a9/41425dcada05ed74a451f9b8abde92a9.html
Заголовок, (Title) документа по адресу, URL1:
Hugs (interpreter) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)