1 / 10

Moodulid.

Moodulid. Haskellis paigutatakse programmi väiksemad komponendid moodulitesse. Iga moodul paikneb oma failis ja kui on soov kasutada moodulit suuremas programmis, siis peab mooduli nimi klappima faili nimega Moodul Cards. module Cards where data Card = ... data Deck = ...

emile
Download Presentation

Moodulid.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Moodulid. • Haskellis paigutatakse programmi väiksemad komponendid moodulitesse. • Iga moodul paikneb oma failis ja kui on soov kasutada moodulit suuremas programmis, siis peab mooduli nimi klappima faili nimega • Moodul Cards

  2. module Cards where data Card = ... data Deck = ... newDeck :: ... -> Deck newDeck = ... shuffle :: ... -> Deck -> Deck shuffle = ... -- ’deal deck n’ deals ’n’ cards from ’deck’ deal :: Deck -> Int -> [Card] deal deck n = dealHelper deck n [] dealHelper = ...

  3. Eksportimine • Funktsiooni dealHelper väljanägemine sõltub tugevasti sellest, milliseid andmestruktuure me kasutame • me ei taha, et teised inimesed seda funktsiooni välja kutsuda saaksid. module Cards ( Card(), Deck(), newDeck, shuffle, deal ) where ...

  4. data Card = Card Suit Face data Suit = Hearts | Spades | Diamonds | Clubs data Face = Jack | Queen | King | Ace | Number Int • Saab kasutada objekte tüüpi Card • Ei saa konstrueerida oma kaarte • Ei saa kätte salvestatud infot kaartide suuruse ja masti kohta

  5. module Cards ( Card(Card), Suit(Hearts,Spades,Diamonds,Clubs), Face(Jack,Queen,King,Ace,Number), ... ) where ... module Cards ( Card(..), Suit(..), Face(..), ... ) where ...

  6. Importimine module Poker where import Cards • Saab kasutada kõiki funktsioone, tüüpe ja konstruktoreid, mida moodul Cards ekspordib newDeck Cards.newDeck

  7. kaks moodulit ekspordivad sama nimega funktsioone või tüüpe: üks moodulitest tuleb importida qualified- stiilis. import qualified Cards • Siis saab kasutada ainult teist, pikemat moodust, vältimaks tekkida võivat mitmetähenduslikkust.

  8. Võib importida ainult osad funktsioonid import Cards (newDeck) • Osad funktsioonid võib peita import Cards hiding (deal) • Vahel tuleb kasuks lühendamine import qualified Cards as C • Kõiki võimalusi saab omavahel kombineerida

  9. Hierarhiline importimine • võimaldab (teatava tasemeni) kindlaks määrata, kus moodul asub (kaustade struktuuris) • Näiteks Cards.hs võib asuda haskell/Cards/Cards.hs.

  10. module Cards.Cards(...) where ... I import Cards.Cards import qualified Cards.Cards as Cards ... Cards.newDeck ...

More Related