Skip to the content.

Седмица 5 - Модули, писане, вградени (Map, List, Set)

Tic Tac Toe

Recreational Mini-Project of the week

Материал

Какво правихме предния път

Не остана време за

Двоично дърво

data Tree a = Empty | Tree a (Tree a) (Tree a) deriving (Show)

Record syntax

data Student' = Student'
  { firstName :: String,
    lastName :: String,
    facultyNumber :: Int,
    bio :: String
  }
  deriving (Show)

Модули

A Haskell module is a collection of related functions, types and typeclasses.

Синтаксис import <module name>

Пример:

import Data.List

numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub

Импортиране в GHCi

ghci> :m + Data.List

ghci> :m + Data.List Data.Map Data.Set -- import multiple modules in GHCi

Селективно импортиране (импортирай само каквото ти трябва)

import Data.List (nub, sort)

Hiding

import Data.List hiding (nub) -- Import everything but `nub`

Не пръскай всичко в главния скоуп (също е начин да се справим с импортиране на ф-ии с имена които вече сме дефинирали)

import qualified Data.Map

Data.Map.filter -- refers to the filter in `Data.Map`

но може идентификаторите с които реферираме ф-ии да станат прекалено дълги.

Именоване на импортиран модул

import qualified Data.Map as M

M.filter -- much better 😌

Haskell Hierarchical Libraries - Документация на стандартната библиотека (какви модули има и кое къде е).

Задачи

  1. Имплементирайте игра ConnectFour