SlideShare a Scribd company logo
1 of 39
Внутреннее представление списков. Применяющие функционалы . Лекция  8
[object Object],[object Object],[object Object],[object Object]
Внутреннее представление списков
Структура памяти  ,[object Object],[object Object],[object Object]
Представление списков через списочную ячейку
Представление списков через точечные пары  ,[object Object],[object Object],[object Object],[object Object]
Списочная ячейка и базовые функции  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Списочная ячейка и базовые функции ,[object Object]
Списочная ячейка и базовые функции ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Переменные и списки  ,[object Object],[object Object],[object Object],[object Object]
Переменные и списки ,[object Object],[object Object],[object Object]
Равенство списков ,[object Object],[object Object],[object Object],[object Object]
Пример ,[object Object],[object Object],[object Object],*  (equal lis1 lis2) t *  (equal lis1 lis3) t *  (eql lis1 lis2) nil *  (eql lis1 lis3) t *  (eq lis1 lis2) nil *  (eq lis1 lis3) t *   (setq m 'abc) *  (setq n 'abc) *  (eq m n) t  Для отдельного атома принцип не выполняется,  т.е. новые ячейки не отводятся.
Cборка мусора  ,[object Object],[object Object],[object Object],[object Object]
Обработка списков без разрушения. Append
Обработка списков без разрушения. Append. ,[object Object],[object Object],[object Object],[object Object]
Структура при APPEND  Append   создает копии всех списочных ячеек для каждого элемента во всех аргументах, исключая последний. C ons  создает только одну списочную ячейку.
Разрушающие функции
Разрушающие функции  Функции, которые изменяют содержимое указателей вместо создания новых  списочных ячеек, называют  разрушающими . (т.к. указатель заменяется и исходная структура  разрушается)
NCONC  ,[object Object],[object Object],[object Object],[object Object]
RPLACA, RPLACD  ,[object Object],[object Object],[object Object],[object Object]
Механизм действия ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Механизм действия Через  setf (rplaca x y)  <=>  (setf (car x) y) (rplacd x y)  <=>  (setf (cdr x) y)
Пример ,[object Object],[object Object],[object Object],[object Object]
Использование разрушающих функций  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Применяющие функционалы
Применяющие функционалы  применяют функциональный аргумент к своим параметрам. APPLY  FUNCALL   Применяющие функционалы вычисляют значение функции.  (В этом смысле они аналогичны функции  EVAL , вычисляющей значение выражения.  )
APPLY  ,[object Object]
Пример 1 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Пример 2 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cочетание apply, nconc, mapcar – mapcan  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cочетание apply, nconc, mapcar – mapcan ,[object Object],[object Object],[object Object]
Cочетание apply, nconc, mapcar – mapcan ,[object Object],[object Object],[object Object],[object Object]
Функционал FUNCALL ,[object Object],[object Object],[object Object],*  (funcall '+ 1 2) <=> * (+ 1 2) 3  *  (funcall (car '(+ - / *)) 1 2) 3
Пример ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Блокировка функции ,[object Object],[object Object],[object Object],[object Object],[object Object]
Замыкание ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Блокировки вычисления ,[object Object],[object Object]
Спасибо за внимание! ,[object Object]

More Related Content

What's hot

Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSАнтон Плешивцев
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очередиMikhail Kurnosov
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5Zhanna Kazakova
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьMikhail Kurnosov
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
практика 15
практика 15практика 15
практика 15student_kai
 
Ecma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoEcma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoDenis Khabrenko
 
07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduceRoman Brovko
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06Computer Science Club
 
проект
проектпроект
проектgureva
 
Functional Programming in Python
Functional Programming in PythonFunctional Programming in Python
Functional Programming in Pythondudarev
 

What's hot (20)

Повышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JSПовышение конверсии через оптимизацию JS
Повышение конверсии через оптимизацию JS
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очереди
 
Использование стратегии локального поиска для решения задачи об N ферзях
Использование стратегии локального поиска для решения задачи об N ферзяхИспользование стратегии локального поиска для решения задачи об N ферзях
Использование стратегии локального поиска для решения задачи об N ферзях
 
mri ruby GC
mri ruby GCmri ruby GC
mri ruby GC
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Урок 7. Интерпретация и компиляция функциональных программ.
Урок 7. Интерпретация и компиляция функциональных программ.Урок 7. Интерпретация и компиляция функциональных программ.
Урок 7. Интерпретация и компиляция функциональных программ.
 
практика 15
практика 15практика 15
практика 15
 
Основы SciPy
Основы SciPyОсновы SciPy
Основы SciPy
 
Ecma script 6 yevhen diachenko
Ecma script 6 yevhen diachenkoEcma script 6 yevhen diachenko
Ecma script 6 yevhen diachenko
 
07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
20081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-0620081026 structuralcomplexitytheory lecture05-06
20081026 structuralcomplexitytheory lecture05-06
 
проект
проектпроект
проект
 
Functional Programming in Python
Functional Programming in PythonFunctional Programming in Python
Functional Programming in Python
 
Java8. Innovations
Java8. InnovationsJava8. Innovations
Java8. Innovations
 
Java 8. Lambdas
Java 8. LambdasJava 8. Lambdas
Java 8. Lambdas
 

Viewers also liked

IKT i skole og barnehage - perspektiver for mastergradsstudenter
IKT i skole og barnehage - perspektiver for mastergradsstudenterIKT i skole og barnehage - perspektiver for mastergradsstudenter
IKT i skole og barnehage - perspektiver for mastergradsstudenterGeir Ottestad
 
ICT and Digital Literacy in Norwegian Schools
ICT and Digital Literacy in Norwegian SchoolsICT and Digital Literacy in Norwegian Schools
ICT and Digital Literacy in Norwegian SchoolsGeir Ottestad
 

Viewers also liked (6)

What Is Media 21?
What Is Media 21?What Is Media 21?
What Is Media 21?
 
ITU Mentor
ITU MentorITU Mentor
ITU Mentor
 
IKT i skole og barnehage - perspektiver for mastergradsstudenter
IKT i skole og barnehage - perspektiver for mastergradsstudenterIKT i skole og barnehage - perspektiver for mastergradsstudenter
IKT i skole og barnehage - perspektiver for mastergradsstudenter
 
Lisp8
Lisp8Lisp8
Lisp8
 
Tv2skole170812
Tv2skole170812Tv2skole170812
Tv2skole170812
 
ICT and Digital Literacy in Norwegian Schools
ICT and Digital Literacy in Norwegian SchoolsICT and Digital Literacy in Norwegian Schools
ICT and Digital Literacy in Norwegian Schools
 

Similar to Lisp8

Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPython Meetup
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Technopark
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Technopark
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationNikolay Samokhvalov
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...pgdayrussia
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4 Dima Dzuba
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовtvaleev
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?tfmailru
 
Software Transactional Memory
Software Transactional MemorySoftware Transactional Memory
Software Transactional MemoryVadim Tsesko
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очередиMikhail Kurnosov
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10student_kai
 

Similar to Lisp8 (20)

Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
Pyton – пробуем функциональный стиль
Pyton – пробуем функциональный стильPyton – пробуем функциональный стиль
Pyton – пробуем функциональный стиль
 
Функциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядковФункциональное программирование.Списки. Функции высших порядков
Функциональное программирование.Списки. Функции высших порядков
 
PHP7 - что ожидать?
PHP7 - что ожидать?PHP7 - что ожидать?
PHP7 - что ожидать?
 
Clojure #1
Clojure #1Clojure #1
Clojure #1
 
Основы Python. Функции
Основы Python. ФункцииОсновы Python. Функции
Основы Python. Функции
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2Алгоритмы и структуры данных осень 2013 лекция 2
Алгоритмы и структуры данных осень 2013 лекция 2
 
SAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentationSAMag2007 Conference: PostgreSQL 8.3 presentation
SAMag2007 Conference: PostgreSQL 8.3 presentation
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
 
Clojure #2 (2014)
Clojure #2 (2014)Clojure #2 (2014)
Clojure #2 (2014)
 
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
Объектно-Ориентированное Программирование на C++, Лекции  3 и 4 Объектно-Ориентированное Программирование на C++, Лекции  3 и 4
Объектно-Ориентированное Программирование на C++, Лекции 3 и 4
 
Stream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководовStream API: рекомендации лучших собаководов
Stream API: рекомендации лучших собаководов
 
Урок 4. "Завязывание узлов". Классы
Урок 4. "Завязывание узлов". КлассыУрок 4. "Завязывание узлов". Классы
Урок 4. "Завязывание узлов". Классы
 
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
Tarantool: как обрабатывать 
1,5 млрд запросов в сутки?
 
Software Transactional Memory
Software Transactional MemorySoftware Transactional Memory
Software Transactional Memory
 
Лекция 4. Стеки и очереди
Лекция 4. Стеки и очередиЛекция 4. Стеки и очереди
Лекция 4. Стеки и очереди
 
презентация лекции №10
презентация лекции №10презентация лекции №10
презентация лекции №10
 
Урок 1. Что такое функциональное программирование
Урок 1. Что такое функциональное программированиеУрок 1. Что такое функциональное программирование
Урок 1. Что такое функциональное программирование
 

Lisp8