Objetí - Hugs
Vývojáři | Mark P. Jones, další |
---|---|
Stabilní uvolnění | Září 2006 / 21. září 2006 |
Operační systém | Cross-platform |
Typ | Překladač |
Licence | BSD |
webová stránka | Domovská stránka Hugs 98 |
Objetí (Systém Gofer uživatele Haskell), taky Objetí 98, je bytecode tlumočník pro funkční programovací jazyk Haskell. Hugs je jeho nástupcem Gofer, a byl původně odvozen od Gofer verze 2.30b.[2] Objetí a Gofer původně vyvinul Mark P. Jones, nyní profesor na Státní univerzita v Portlandu.
Objetí přichází s jednoduchou grafickou knihovnou. Jako úplná implementace Haskell to je přenosný a jednoduchá instalace, Hugs se někdy doporučuje pro nové uživatele Haskell.
Objetí se odchyluje od specifikace Haskell 98[3] několika drobnými způsoby.[4] Hugs například nepodporuje vzájemně rekurzivní moduly. Seznam rozdílů existuje.[5]
Výzva objetí (Haskell REPL ) přijímá výrazy pro vyhodnocení, ale ne definice modulů, typů nebo funkcí. Objetí mohou načíst moduly Haskell při spuštění.[6]
Příklady
Rozšiřitelné záznamy
Příklad „Typed records with extensibility“, nestandardní funkce jedinečná pro Hugs.[7]
modul Hlavní kdeimport Hugs.Trextyp Coord = Dvojnásobektyp Point2D = Rec (X::Coord, y::Coord) typ Point3D = Rec (X::Coord, y::Coord, z::Coord) point2D = (X=1, y=1) :: Point2D- emptyRec :: Rec EmptyRow - předdefinováno- (x = 1 | (y = 1)) - rec. rozšíření- (x = v | rec) - dekompozice hodnot záznamu, pole vzorů nesmí být prázdná- (x :: type | rec) - rozklad typu záznamu- (rec z) v kontextu znamená '' rec '' neobsahuje pole '' z '' - přidejte pole z se stejným typem jako pole xaddZCoord :: (r\z, r\X) => t -> Rec ( X::t | r) -> Rec ( X::t, z::t | r)addZCoord z ( X = X | jiný) = (X = X, z = z | jiný)bod3D = addZCoord 3 point2D - :: Point3D- připustit jakýkoli záznam s '' zobrazitelnými '' poli x a y printXY :: (Ukázat t, r\X, r\y) => Rec (X::t, y::t | r) -> IO ()printXY směřovat = putStrLn xy - s přístupovými poli stylu SML (předpona '#') kde xy = ukázat (#X směřovat) ++", "++ ukázat (#y směřovat) přírůstek X :: (Num t, r\X) => Rec (X::t | r) -> Rec (X::t | r)přírůstek X (X=proti | zbytek) = (X=proti+1 | zbytek)hlavní = dělat nechat point3D ' = přírůstek X bod3D printXY point2D printXY point3D '
Spuštění s vypnutou kompatibilitou H98 pro aktivaci jazykových rozšíření:[8]
runhugs -98 test.hs
Reference
- ^ „Objetí 98“. www.haskell.org.
- ^ „Často kladené otázky o objetí“. Citováno 2006-08-04.
- ^ Simon Peyton Jones (redaktor) (Prosinec 2002). „Jazyk a knihovny Haskell 98: revidovaná zpráva“. Citováno 2006-08-03.CS1 maint: další text: seznam autorů (odkaz)
- ^ „Neshoda s Haskell 98“. Uživatelská příručka Hugs 98. Citováno 2006-08-04.
- ^ "Seznam rozdílů se standardem H98".
- ^ "Načítání a úpravy souborů modulu Haskell". Uživatelská příručka Hugs 98. Citováno 2006-08-04.
- ^ „Objetí specifická jazyková rozšíření“. www.haskell.org.
- ^ „Změna chování objetí“. www.haskell.org.