Haskell, 07 лекция (от 09 ноября)
Материал из eSyr's wiki.
ESyr01 (Обсуждение | вклад)
(Новая: * '''Презентация:''' Media:ТФП -- Лекция 7.pdf * '''Аудиозапись:''' http://esyr.org/lections/audio/haskell_2010_winter/haskell_10_11_09.ogg * '''Вид...)
К следующему изменению →
Текущая версия
- Презентация: Media:ТФП -- Лекция 7.pdf
- Аудиозапись: http://esyr.org/lections/audio/haskell_2010_winter/haskell_10_11_09.ogg
- Видеозапись: http://esyr.org/video/haskell/haskell_10_11_09.raw.ogv (lq)
"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 |