Показано с 1 по 10 из 44

Тема: Макросы ОЛ: с побочными эффектами и/или детерминированные?

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Собственно: да, для любой ОЛ программы/макроса можно составить Haskell программу, которая ведёт себя так же (ну, возвращает те же значения при тех же входах).
    Работу с сетевыми переменными пока опустим. Даже работу с временем можно опустить (хотя я ни разу не соглашусь, что "ОЛ blink это читая функция")

    Но значит ли это, что любая ОЛ программа является "чистой"? Вовсе нет. Или, по-вашему, действительно любая ОЛ программа является "чистой", "детерминированной" и "без побочных эффектов"?
    Поэтому неправильно "оправдывать ОЛ" словами <<У макроса на вход помимо его реальных аргументов есть ещё "аргумент с состоянием", который передаётся неявно>>.

    Да нет никакого дополнительного аргумента у ОЛ макроса.
    Запускаешь ОЛ макрос 2 раза -- и он возвращает разное. По определению это означает, что макрос не является детерминированным. Какие ещё разговоры могут быть?
    Последний раз редактировалось Владимир Ситников; 21.04.2017 в 10:21.

  2. #2
    Пользователь Аватар для anthrwpos
    Регистрация
    13.02.2017
    Адрес
    Ленобл
    Сообщений
    188

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Собственно: да, для любой ОЛ программы/макроса можно составить Haskell программу, которая ведёт себя так же
    Ну сам по себе blink написать нельзя, ибо чистая программа не имеет доступа к системному времени и не может рассчитать время цикла. Но если время
    цикла постулировать как константу, можно чистым образом и блинк сделать)
    Но значит ли это, что любая ОЛ программа является "чистой"?
    Разумеется нет. ОЛ программа читает входы и записывает выходы.
    Я продвигаю идею о чистоте только макросов.

  3. #3

    По умолчанию

    Цитата Сообщение от anthrwpos Посмотреть сообщение
    Ну сам по себе blink написать нельзя, ибо чистая программа не имеет доступа к системному времени и не может рассчитать время цикла. Но если время
    цикла постулировать как константу, можно чистым образом и блинк сделать)
    Что за бред? На Haskell нельзя написать blink?
    Вы в своём уме? Data.Time.Clock и вперёд.
    Становятся ли Haskell функции от этого нечистыми? Нет. Как-никак, в Haskell вообще все функции являются чистыми функциями.

    Но вы, я так понял, считаете, что "нечистые" это только те функции, которые выполняют IO (ну, читают файлы, считывают значения DI/DO).
    Да, те функции, которые читают файлы нечистые.
    Но могут быть (разумеется, не в Haskell, а в Си, в ST, в ОЛ, в МЭК61131 и т.п.) нечистыми даже те функции (ФБ, макросы), которые с файлами и IO никогда вообще не работают.

Похожие темы

  1. Универсальные макросы для OWEN Logic
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 921
    Последнее сообщение: 01.12.2025, 11:45
  2. Специальные ,функционально законченные макросы
    от rovki в разделе Программируемые реле
    Ответов: 135
    Последнее сообщение: 14.02.2024, 12:43
  3. макросы для ПР200.
    от Павел Братковский в разделе Среда программирования OWEN Logic
    Ответов: 174
    Последнее сообщение: 17.05.2020, 19:34
  4. Макросы для КаСкады
    от rovki в разделе Программируемые реле
    Ответов: 19
    Последнее сообщение: 04.09.2016, 10:08
  5. Макросы -- объясните немного....
    от tigdin в разделе Программируемые реле
    Ответов: 20
    Последнее сообщение: 28.08.2014, 14:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •