Nemrég kezdtem el tanulni ezt a nyelvet, eléggé szokatlan nekem, bár nagyon tetszik. GHCI-ben próbálgatok apróságokat.
Ha ezt a sort beírom:
let fib n = if n < 1 then 1 else fib(n-1) + fib(n-2),
majd kiadom pl. a fib 6 parancsot, kiírja hogy 21. Ha viszont a fib :: Int -> Int rekurzív függvényt így definiálom:
let fib n = if n == 1 then 1 else fib(n-1) + fib(n-2),
akkor akármit beírok, "*** Exception: stack overflow" üzenet fogad. Nincs tippem sem, miért van ez a különbözőség. Gondolom másképp értékelődik ki a két definíció, de mi lényegi a különbség?
-------------------
2.6.17-gentoo-r4
- 2661 megtekintés
Hozzászólások
gondolom, mert n=2-re az else ágban lesz egy fib(0), ami szintén az else ágra megy, ami szintén az ....
- A hozzászóláshoz be kell jelentkezni
http://www.willamette.edu/~fruehr/haskell/evolution.html
ha még nem láttad volna..
- A hozzászóláshoz be kell jelentkezni
Kösz, kezdem érteni. Az lenne még a kérdésem, hogy sql (lehetőleg mysql) adatbázist kezelő működő modult tudtok haskellhez? A htoolkit hsql-jét próbáltam, de sehogy se működött, mondjuk a csomagot még tesztelik gentoon. Azt írja a ghci, hogy "it is not a module in the current program, or in any known package". Próbáltam a programomba írni, import és module parancsokkal (a .hi file nevével is és a modul nevével is), de sehogy se ment. Nagyon furcsa, amit a ghci csinál:
Prelude> :add /usr/lib/hsql-mysql-1.7/ghc-6.4.1/Database/HSQL/MySQL.hi
Could not find module `/usr/lib/hsql-mysql-1.7/ghc-6.4.1/Database/HSQL/MySQL.hi':
use -v to see a list of the files searched for
(one of the roots of the dependency analysis)
Prelude>
-v kapcsolóval:
Prelude> :add /usr/lib/hsql-mysql-1.7/ghc-6.4.1/Database/HSQL/MySQL.hi
*** Chasing dependencies:
Could not find module `/usr/lib/hsql-mysql-1.7/ghc-6.4.1/Database/HSQL/MySQL.hi':
locations searched:
/usr/lib/hsql-mysql-1/7/ghc-6/4/1/Database/HSQL/MySQL/hi.hs
/usr/lib/hsql-mysql-1/7/ghc-6/4/1/Database/HSQL/MySQL/hi.lhs
(one of the roots of the dependency analysis)
Prelude>
A file-t átmásoltam a ghc import dirjébe, az eredmény ugyanez. Azt nem értem, miért cseréli ki a pontokat / jelekre. Ha átnevezem .hs-re, akkor pedig lexical error, gondolom forrást vár(na).
A package.conf -ban benne van a Database.HSQL.MySQL, mégse megy sehogyse... más modult pedig simán be tudok tölteni.
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
Amúgy nagyon jól dokumentált, idáig csak 2 dolgot nem találtam meg (sqlt nem számítva), azt hogy van-e ciklus, ill. lista/tömb n. elemét hogy kell kiíratni. Nem vagyok túl jól angolból, így bocs ha benne van a doksiban de nem vettem észre. Szal van-e valami for szerű akármi mint cben, és hogy íratom ki egy lista n. elemét? Persze rekurzióval mind2őt meg lehet oldani, de van rá beépített cucc?
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
Funkcionális nyelvekben rekurzióval lehet (és kell) megoldani a ciklust..
- A hozzászóláshoz be kell jelentkezni
Hali!
Gondolom egyetemen vagy fősulin találkoztál ezzel a nyelvel. Nos nekünk szegeden nagyon jó doksi volt hozzzá a köv linkeken:
http://www.inf.u-szeged.hu/~michnay/pnyelvek.php
javaslom a jegyzet átolvavsását. :)
További sok sikert!
Zsolt
- A hozzászóláshoz be kell jelentkezni
Kösz.
Ezt a jegyzetet már olvasgattam, ez volt az egyetlen magyar nyelvű amit megtaláltam, tetszik, bár lehetne részletesebb is. :) Közben gondolkodtam a lista n. elemének kiírásán, gondolom konkrét esetben azt is rekurzióval kell megcsinálni. Szeretnék, de sajnos még nem járok egyetemre, remélem jövőre fogok. :)
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
Vmi opengl tutorialt nem tudtok? haskell.org-on van egy, de az nagyon régi és nem működik semmi amit az alapján próbálok. GHC-be bele van forgatva az opengl támogatás pedig.
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
OpenGL anyagot itt találtam elég korrektet. Ill. sztem korrektet :) .
EDIT: nem kifelejtettem a linket... pfff http://www.inf.u-szeged.hu/~tanacs/oktatas/szggraf06/szggraf06.html
Melik egyetemre szeretnél jelentkezni? (ha nem személyes a kérdés)
Zsolt
- A hozzászóláshoz be kell jelentkezni
Kösz, megnézem. Bár ez c-s, de ha jól tudom lehet include-olni haskellbe. Találtam nemrég egy (angol) tutorialszerűséget, ami csak haskellben openglezik: http://www.tfh-berlin.de/~panitz/hopengl/skript.pdf, bár nem a legfrissebb és csak draft, kezdetnek sztem jó, aztán meg úgyis ott a haddock... Kipróbáltam a HTTP modult is, már le tudok szedni forrást süti és hibakezeléssel. :)
Eltére szeretnék menni fizikusnak.
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
Közben a mysqlt sikerült belőnöm (import Database.HSQL.MySQL)
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni
Most kipróbáltam a Database.HSQL modult, de tudom használni a doksi alapján (más doksit/tutorialt kerestem, de nem találtam). Szinte mindegyik függvénynek egyik argmumentuma Connection tipusú (pl. disconnect :: Connection -> IO ()), vagy Statement tipusú. A leírás szerint (http://htoolkit.sourceforge.net/doc/hsql/Database.HSQL.html):
A Connection type represents a connection to a database, through which you can operate on the it. In order to create the connection you need to use the connect function from the module for your prefered backend.
The Statement type represents a result from the execution of given SQL query.
Ezek számomra semmi konkrétat nem jelentenek. Nem is értem honnan lenne nekem Statement vagy Connection tipusú akármim... Számomra úgy lenne logikus hogy a visszatérési érték lenne Statement vagy ilyesmi és az argmumentumok char/string tipusúak.
-------------------
2.6.17-gentoo-r4
- A hozzászóláshoz be kell jelentkezni