Вход:  Пароль:  
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Предыдущее.

3 Имена


Выражение: (* 10 50) хорошо, а: (* width height) лучше. (3.1415926 * 10.5 * 10.5) – интригующе, а (* pi radius radius) – всё же понятнее, (+ 2/3 5/7) – какие-то невзрачные действия с дробями, а (+ my-piece-of-cake your-piece-of-cake) – уже обретает смысл.


Хочется сделать выражения более осмысленные и читаемые. Сказано – сделано. Фраза «Определим b как 5", записывается (define b 5). Сразу несколько примеров:


Если при определении встречается какое-либо выражение, например сумма двух целых чисел из последнего примера, то это выражение вычисляется и переменная полагается равной уже его результату. Кстати a,b,c,str и width – действительно называются переменными. Вас это совершенно не должно смущать ибо с переменными вы сталкивались ещё в курсе школьной алгебры. Итак, записать (define w (+ 1 3)) совершенно равносильно тому что записать (define w 4). Либо вы подсчитаете в уме, либо за вас это сделает Scheme.


Ну уж коли мы вспомнили про школу, то теперь мы можем записать известные нам выражения.


Теперь вооружившись полученными знаниями мы можем записывать уже гораздо более сложные программы на Scheme, например такую:


Наверное вы заметили, что комментарии к коду я пишу начиная их с ;. Это не случайно, все комментарии в тексте программы начинаются с символа ;. Когда интерпретатор или компилятор читает наш код, весь текст начинающийся с ; и до конца строки он игнорирует.


Ещё одна программа:

4 Про истину


Если говорить кратко «всё есть истина кроме лжи», то есть

Вообще все другие типы, которые мы ещё не изучили – это истина. Все кроме «лжи», которая имеет обозначение #f.


Сразу познакомимся с простейшими логическими операциями:
Результат (not 3) – это #f,
Результат (not “test”) – это тоже #f.
Интересно, а какой должен быть результат (not #f) . Истин-то у нас много ;) На этот случай есть истина в первой инстанции, обозначаемая #t. Стало быть результат (not #f) – это #t.

5 Разделяй и властвуй


Ещё для счастья нам не хватает объединять повторяющиеся фрагменты в функции, которые можно было бы потом вызывать.


Это очень важный и интересный момент в Схеме. Вы наверное часто замечали, что разделение многоэтапной операции на составляющие очень полезно. Например, создание нового процесса, можно разделить на два этапа. Клонирование – fork и замена содержимого клона на другой процесс – exec. Такое разделение позволяет не запускать например новый процесс, когда это не нужно (сразу exec) или не порождать новый процесс, если клон сам справится с задачей (сразу fork).


Вот так и с функциями. Создание функции, например f от одного аргумента, делится на собственно создание одноаргументной функции и на присваивании ей имени f.


Как присваивать имена, мы уже знаем – через define, а создание функции описывается следующей конструкцией


Если аргументов нет, то они просто не пишутся. Результат вычисления последней инструкции возвращается в качестве ответа.


Примеры:


Теперь совместим создание функции с присваиванием ей имени:


Вызываются созданные функции точно также как мы это делали ранее: (имя аргументы)
Как я говорил уже, синтаксис в Схеме очень регулярный, нет лишних синтаксических конструкций, если они не требуются.


Ну вот, теперь мы можем ещё больше усовершенствовать наши программы:


Продолжение следует....


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]