हग्स (दुभाषिया)

From Vigyanwiki
Hugs 98
Developer(s)Mark P. Jones, others
Final release
September 2006 / September 21, 2006 (2006-09-21)
Operating systemCross-platform
PredecessorGofer
TypeCompiler
LicenseBSD
Websitewww.haskell.org/hugs/

हग्स (हास्केल यूजर गोफर सिस्टम), जिसे हग्स 98 भी कहा जाता है, कार्यात्मक प्रोग्रामिंग भाषा हास्केल (प्रोग्रामिंग भाषा) के लिए एक बाइट-कोड दुभाषिया (कंप्यूटिंग) है। हग्स गोफ़र (सॉफ़्टवेयर) का उत्तराधिकारी है, और मूल रूप से गोफ़र संस्करण 2.30बी से लिया गया था।[1] हग्स और गोफ़र मूल रूप से मार्क पी. जोन्स द्वारा विकसित किए गए थे, जो अब पोर्टलैंड स्टेट यूनिवर्सिटी में प्रोफेसर हैं।

हग्स एक साधारण ग्राफ़िक्स लाइब्रेरी के साथ आता है। संपूर्ण हास्केल कार्यान्वयन के रूप में जो पोर्टेबिलिटी (सॉफ़्टवेयर) है और स्थापित करने में आसान है, हग्स को कभी-कभी नए हास्केल उपयोगकर्ताओं के लिए अनुशंसित किया जाता है।

हग्स कई छोटे तरीकों से हास्केल 98 विनिर्देशन [2] से विचलित होता है।[3] उदाहरण के लिए, हग्स परस्पर पुनरावर्ती मॉड्यूल का समर्थन नहीं करता है। मतभेदों की एक सूची उपस्थित है.[4]

हग्स प्रॉम्प्ट (एक हास्केल रीड-इवल-प्रिंट लूप) मूल्यांकन के लिए अभिव्यक्ति स्वीकार करता है, लेकिन मॉड्यूल, प्रकार या फ़ंक्शन परिभाषाओं को नहीं। हग्स स्टार्ट-अप पर हास्केल मॉड्यूल लोड कर सकते हैं।[5]

उदाहरण

एक्स्टेंसिबल रिकॉर्ड

एक्स्टेंसिबिलिटी के साथ टाइप किए गए रिकॉर्ड का एक उदाहरण, हग्स के लिए अद्वितीय एक गैर मानक सुविधा।[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. "आलिंगन के बारे में अक्सर पूछे जाने वाले प्रश्न". Retrieved 2006-08-04.
  2. Simon Peyton Jones (editor) (December 2002). "Haskell 98 Language and Libraries: The Revised Report". Retrieved 2006-08-03. {{cite web}}: |author= has generic name (help)
  3. "Haskell 98 non-compliance". The Hugs 98 User's Guide. Retrieved 2006-08-04.
  4. "List of differences with H98 standard".
  5. "Loading and editing Haskell module files". The Hugs 98 User's Guide. Retrieved 2006-08-04.
  6. "आलिंगन-विशिष्ट भाषा एक्सटेंशन". www.haskell.org.
  7. "आलिंगन का व्यवहार बदलना". www.haskell.org.

बाहरी संबंध