Haskell, 07 лекция (от 09 ноября)

Материал из eSyr's wiki.

(Различия между версиями)
Перейти к: навигация, поиск

ESyr01 (Обсуждение | вклад)
(Новая: * '''Презентация:''' Media:ТФП -- Лекция 7.pdf * '''Аудиозапись:''' http://esyr.org/lections/audio/haskell_2010_winter/haskell_10_11_09.ogg * '''Вид...)
К следующему изменению →

Текущая версия

"class" [<xontext> "=>"] <class_name> <type_variable> "where":
  { <methodname> "::" <type> }
  { <methname.1> "=" <methodname.2> }
  { infix[r] ... }

Есть класс Ord, опис. класс с опр. операциями сравнения, он, в свою очередь,Ю насл. от Eq.

class Eq a => Ord a where
  (<=) :: a → a → Bool

теперь, если Вы захотите написать

instance Ord (Mytype a) where

очевидно, теперь тогда придётся опередлять операции как непоср. класса Ord, так и Eq. И под тем, как лектор понимает реализацию, в том числе насл. одного вирт. метода от другого.

В хаскеле есть много приятных вещей, в том чисел, напирмсер, возм. постр. насл. автоматически. Такими классы явл. Eq, Ord, Enum, Show, Read. Для того, чтобы указать, что от этих классов нужно унасл. автоматически, нужно указать:

data Test a = Test a
  deriving Eq

некоторые станд. классы хаскеля.

class Functor a where
  fmap :: (a → b) → (fa → fb)

Второй класс функтор. Этот класс имеет всего один метод, функцию высшего порядка. Аргумент --- функция из a в b, возвр. нечто, что принимает на вход a в нечто, что принимает на вход b.

Класс чисел.

class (Eqa, Show a) => Num a where
  (8), (-), (+) :: a → a → a
  negate :: a → a
  abs, signum
  fromInt
  fromInteger
class (Eq a) => Ord a where
  compare :: a → a → Ordering
  (<), (<=), (>=), (>) :: a → a → Bool;
 max, min :: a → a → a
class Monad m where
  (>>=) :: m a → (a → m b)
  (>>) :: m a → m b → m b
  return :: a → m a
  fail :: String → m a

Что такое m a —


Теория функционального программирования. Язык Haskell


00 01 02 03 04 05 06 07 08 09 10 11 12


Календарь

Сентябрь
23 28
Октябрь
05 12 19 26
Ноябрь
02 09 16 23 30
Декабрь
07 14


Эта статья является конспектом лекции.

Эта статья ещё не вычитана. Пожалуйста, вычитайте её и исправьте ошибки, если они есть.
Личные инструменты
Разделы