Unknown - haskell-notes

Здесь есть возможность читать онлайн «Unknown - haskell-notes» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на английском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

haskell-notes: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «haskell-notes»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

haskell-notes — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «haskell-notes», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Сначала выпишем в модуль наши синонимы:

module Logic where

import Prelude( Bool( ..), Show( ..), Eq( ..))

true :: Bool

true = True

false :: Bool

false = False

not :: Bool -> Bool

not True

= False

not False = True

and :: Bool -> Bool -> Bool

and False

_

= False

and True

x

=x

or

:: Bool -> Bool -> Bool

or True

_ = True

or False

x =x

xor :: Bool -> Bool -> Bool

xor a b =or (and (not a) b) (and a (not b))

ifThenElse :: Bool ->a ->a ->a

ifThenElse True

t

_ =t

ifThenElse False

_

e =e

Теперь сохраним модуль и загрузим его в интерпретатор. Для наглядности мы установим флаг +t, при

этом будет возвращено не только значение, но и его тип. Понабираем разные комбинации значений:

*Logic> :l Logic

[1 of1] Compiling Logic

( Logic.hs, interpreted )

Ok, modules loaded : Logic.

*Logic> :set +t

*Logic>not (and true False)

True

it :: Bool

*Logic>or (and true true) (or False False)

True

it :: Bool

*Logic>xor (not True) ( False)

False

it :: Bool

*Logic>ifThenElse (or true false) True False

True

it :: Bool

Логические значения | 27

Разумеется в Haskell уже определены логические операции, здесь мы просто тренировались. Они называ-

ются not, ( &&), ||. Операция xor это то же самое, что и ( /=). Для Boolопределён экземпляр класса Eq. Также

в Haskell есть конструкция ветвления она пишется так:

x = ifcond thent elsee

Слова if, thenи else– ключевые. cond имеет тип Bool, а t и e одинаковый тип.

В коде программы обычно пишут так:

x = ifa >3

then”Hello”

else( ifa <0

then”Hello”

else”Bye”)

Отступы обязательны.

Давайте загрузим в интерпретатор модуль Preludeи наберём те же выражения стандартными функция-

ми:

*Logic> :m Prelude

Prelude>not ( True && False)

True

it :: Bool

Prelude>( True && True) ||( False || False)

True

it :: Bool

Prelude>not True /= False

False

it :: Bool

Prelude> if( True || False) then True else False

True

it :: Bool

Бинарные операции с символьными именами пишутся в инфиксной форме, то есть между аргументами

как в a &&b или a +b. Значение с буквенным именем также можно писать в инфиксной форме, для этого

оно заключается в апострофы, например a ‘and‘ b или a ‘plus‘ b. Апострофы обычно находятся на одной

кнопке с буквой “ё”. Также символьные функции можно применять в префиксной форме, заключив их в

скобки, например ( &&) a b и ( +) a b. Попробуем в интерпретаторе:

Prelude> True && False

False

it :: Integer

Prelude>( &&) True False

False

it :: Bool

Prelude> letand a b =a &&b

and :: Bool -> Bool -> Bool

Prelude>and True False

False

it :: Bool

Prelude> True‘and‘ False

False

it :: Bool

Обратите внимание на строчку letand a b =a &&b. В ней мы определили синоним в интерпретаторе.

Сначала мы пишем ключевое слово letзатем обычное определение синонима, как в программе. Это простое

однострочное определение, но мы можем набирать в интерпретаторе и более сложные. Мы можем написать

несколько строчек в одной, разделив их точкой с запятой:

Prelude> letnot2 True = False; not2 False = True

Мы можем записать это определение более наглядно, совсем как в редакторе, если воспользуемся много-

строчным вводом. Для этого просто наберите команду :{. Для выхода воспользуйтесь командой :}. Отметим,

что точкой с запятой можно пользоваться и в обычном коде. Например в том случае если у нас много кратких

определений и мы хотим записать их покомпактней, мы можем сделать это так:

a1 =1;

a2 =2;

a3 =3

a4 =4;

a5 =5;

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «haskell-notes»

Представляем Вашему вниманию похожие книги на «haskell-notes» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «haskell-notes»

Обсуждение, отзывы о книге «haskell-notes» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x