Sunt variabilele din do-notatie variabile globale ?

From HaskellWiki
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Sunt variabilele din do-notatie variabile globale ?

Raspunsul este: Nu. Sunt niste denumiri care se leaga cu niste valori, ca toate variabilele din Haskell. Si nu sunt globale. Sunt mai curand locale secventelor do { ...} care le contin. Scrieti de exemplu programul:

main :: IO ()
main = do { x <- return '1' ;
            putChar x;
            do { x <- return '2' ;
                 putChar x;
                 return ();
                } ;
            putChar x;       
            return () 
          }

Salvati fiserul sub un nume ca : test.hs

Si rulati cu ghci sau cu Hugs:

hugs test.hs

{--
dan@device:~$ hugs test.hs
__   __ __  __  ____   ___      _________________________________________
||   || ||  || ||  || ||__      Hugs 98: Based on the Haskell 98 standard
||___|| ||__|| ||__||  __||     Copyright (c) 1994-2005
||---||         ___||           World Wide Web: http://haskell.org/hugs
||   ||                         Bugs: http://hackage.haskell.org/trac/hugs
||   || Version: September 2006 _________________________________________

Haskell 98 mode: Restart with command line option -98 to enable extensions

Type :? for help
Main> main
121

--}

De altfel Haskell, limbaj functional pur, nu are variabile globale. E vorba de acele variabile care modificandu-se ca urmare a unor instructiuni gresite dau atatea probleme la depanare.