Перейти к содержанию

AI Prompts Log

Лог всех обращений к ИИ в рамках проекта.


Дата: 01.05.2026 Задача: Подготовка к началу работы над проектом — этап 0

Prompt / темы обращений: Одна сессия, охватывала четыре темы: 1. Формирование детального плана работы для Участника 3 относительно других участников — порядок этапов, зависимости, что можно делать параллельно. 2. Обсуждение настройки защиты ветки main — причины отсутствия прав, к кому обращаться, что просить. 3. Согласование структуры и содержания начальной документации — какие файлы создавать, что в них писать на данном этапе. 4. Обсуждение целесообразности написания примеров .x и docs/syntax.md без согласованного синтаксиса.

Ответ ИИ / краткое содержание: - Составлен поэтапный план работы Участника 3 с таблицей зависимостей от других участников. - Выяснено что защиту ветки может настроить только Admin репозитория, нужно обращаться к преподавателю или владельцу организации MAILabs-Edu-2026. - Определена структура docs/ и шаблоны файлов для текущего этапа. - Принято решение не писать примеры и docs/syntax.md до согласования синтаксиса командой.

Что принято: - Поэтапный план работы Участника 3. - Структура docs/ и содержание файлов 00-policy.md, 01-prompts-log.md, 02-team-decisions.md, architecture.md, standard-library.md. - Решение создать examples/ с пустыми файлами-заглушками. - Решение создать docs/syntax.md с одной строкой-плейсхолдером.

Что изменено человеком: - Скорректирован список и содержание создаваемых файлов — убраны конкретные примеры кода из .x файлов и подробное содержание docs/syntax.md как преждевременные без согласованного синтаксиса.

Связанные файлы: - docs/ai-usage/00-policy.md - docs/ai-usage/01-prompts-log.md - docs/ai-usage/02-team-decisions.md - docs/architecture.md - docs/standard-library.md - docs/syntax.md - examples/*.x (пустые заглушки)

Связанный PR: #2


Дата: 02.05.2026 Задача: Реализация Builtins.fs и покрытие тестами

Prompt / темы обращений: Одна сессия, охватывала две темы: 1. Проверка полноты тестов для Builtins.fs — обсуждение граничных случаев, получение дополнительных тестов для eq с несовпадающими типами и WrongArgumentCount для одного аргумента. Итог: тесты признаны полными. 2. Фундаментальное объяснение того что происходит с точки зрения реализации языка — что такое AST, Values, Environment, Evaluator, Builtins, как они связаны между собой, какое отношение имеют к F# и функциональному программированию в целом.

Ответ ИИ / краткое содержание: - Добавлены два теста: builtin eq rejects mismatched types и builtin add rejects single arg. - Дано объяснение архитектуры интерпретатора: AST как discriminated union, иммутабельный Environment, eval как структурная рекурсия, Builtins как начальное окружение, Result как функциональный подход к ошибкам, функции высшего порядка в arithmeticOp.

Что принято: - Оба дополнительных теста добавлены в BuiltinTests.fs. - Понимание архитектуры использовано при написании Builtins.fs.

Что изменено человеком: - Исправлен синтаксис Builtins.fs — убран result {} computation expression которого нет в стандартном F#, заменён на явный pattern matching.

Связанные файлы: - src/Language/Builtins.fs - tests/Language.Tests/BuiltinTests.fs

Связанный PR: #15


Дата: 02.05.2026 Задача: Рефакторинг Builtins.fs для поддержки вызова VClosure

Prompt / темы обращений: Одна сессия, одна тема: Обсуждение архитектурного решения как передать eval в Builtins.fs чтобы map/filter/fold могли вызывать VClosure. Два варианта — makeBuiltins с eval как параметром или перенос функций в Evaluator.fs.

Ответ ИИ / краткое содержание: - Описаны два варианта решения с плюсами и минусами каждого. - Детальный план реализации Варианта А — makeBuiltins. - Написан обновлённый Builtins.fs и изменения в BuiltinTests.fs.

Что принято: - Вариант А — makeBuiltins принимает eval как параметр. - Структура applyFunc внутри makeBuiltins. - Инициализация builtins в тестах через одну строку в начале модуля.

Что изменено человеком: - Решение о выборе варианта принималось совместно командой.

Связанные файлы: - src/Language/Builtins.fs - tests/Language.Tests/BuiltinTests.fs

Связанный PR: #22


Дата: 03.05.2026
Задача: Реализация списков и функций высшего порядка (list, map, filter, fold)

Prompt / темы обращений:
Одна сессия, охватывала две темы: 1. Уточнение терминологии — различие между функтором и функцией map, корректная интерпретация VList как функтора, а map, filter, fold как функций высшего порядка. 2. Проверка и обсуждение реализации встроенных функций: - list, head, tail, cons, empty? - map, filter, fold
включая интеграцию с текущей архитектурой evaluator.

Ответ ИИ / краткое содержание: - Дано корректное объяснение терминологии: - VList — функтор (структура данных), - map — операция над функтором, - filter и fold — функции высшего порядка, не связанные с понятием функтора. - Обсуждены подходы к реализации функций списков и их поведения: - создание списков и базовые операции (list, head, tail, cons, empty?) - применение функций к спискам (map, filter, fold)

Что принято: - Подход к реализации всех функций списков. - Реализация map/filter/fold через универсальный механизм применения функций (applyFunc), поддерживающий как VBuiltin, так и VClosure.

Что изменено человеком: - Расширено покрытие тестами — добавлены дополнительные граничные случаи и проверки ошибок. - Частично переработана структура тестов для лучшей читаемости и полноты покрытия. - Реализация адаптирована под текущую структуру проекта и уже существующие паттерны в Builtins.fs. - Совместно с командой принято архитектурное решение по использованию valueTypeName для единообразного формирования сообщений об ошибках типов.

Связанные файлы: - src/Language/Builtins.fs - tests/Language.Tests/BuiltinTests.fs - docs/ai-usage/01-log-participant-3.md

Связанный PR: #28


Дата: 03.05.2026
Задача: Проработка и реализация Maybe (just, nothing, fmap, bind)

Prompt / темы обращений:
Одна сессия, одна тема: Обсуждение теоретической модели Maybe и её реализации в рамках текущего интерпретатора: - семантика Maybe как контейнера значения (Some / None); - различие между fmap и bind; - требования к типам возвращаемых значений; - интеграция с существующей системой Value и applyFunc.

Ответ ИИ / краткое содержание: - Дано объяснение Maybe как обёртки над значением с возможным отсутствием (VMaybe). - Разобраны функции: - just — оборачивание значения в Some - nothing — представление отсутствия значения - fmap — применение функции внутри контекста Maybe - bind — последовательное вычисление с функцией, возвращающей Maybe - Показано различие между fmap (чистое отображение) и bind (плоское связывание). - Предложен вариант реализации через applyFunc для поддержки как VBuiltin, так и VClosure.

Что принято: - Представление Maybe через VMaybe (Some / None). - Подход к реализации fmap и bind через applyFunc. - Контракт: - fmap возвращает Maybe - bind ожидает функцию, возвращающую Maybe

Что изменено человеком: - Самостоятельно написаны тесты, включая граничные случаи и проверки ошибок. - Реализация адаптирована под текущую архитектуру проекта и существующие паттерны обработки ошибок.

Связанные файлы: - src/Language/Builtins.fs - tests/Language.Tests/BuiltinTests.fs

Связанный PR: #39


Дата: 03.05.2026 Задача: Документация delay/force, пример lazy.x

Prompt / темы обращений: Одна сессия, три темы: 1. Оценка полноты тестов для delay/force. 2. Обсуждение содержания документации для delay/force — что включить в standard-library.md, примеры мемоизации и лексического окружения. 3. Написание примера lazy.x.

Ответ ИИ / краткое содержание: - Тесты признаны полными — дополнительных замечаний нет. - Написан полный обновлённый docs/standard-library.md с примерами для всех секций и секцией Ленивость. - Написан пример lazy.x.

Что принято: - Структура и содержание docs/standard-library.md. - Примеры lazy.x.

Что изменено человеком: - Оценка и дополнение содержания новой документации.

Связанные файлы: - docs/standard-library.md - examples/lazy.x

Связанный PR: #41


Дата: 03.05.2026
Задача: Реализация и тестирование примеров программ (.x) и интеграционных тестов

Prompt / темы обращений:
Одна сессия, охватывала три темы: 1. Проверка полноты парсера относительно всех примеров (.x файлов) — подтверждение покрытия всех конструкций языка (let/letrec/lambda/if/application/higher-order functions). 2. Проектирование и корректировка ExampleTests.fs для полного end-to-end тестирования через pipeline Parser → Evaluator → Builtins. 3. Диагностика падений тестов при корректной логике программы — выявление проблем с форматированием входных данных (CRLF/LF).

Ответ ИИ / краткое содержание: - Подтверждено, что Parser полностью покрывает все используемые конструкции языка. - Предложен и уточнён шаблон ExampleTests.fs для запуска всех .x файлов через единый runner. - Даны корректные ожидаемые результаты для всех примеров (factorial, fibonacci, closure, list ops, map/filter/fold, maybe, lazy). - Предложен упрощённый вариант filter.x для повышения надёжности тестов. - Объяснено, что часть падений вызвана различием CRLF/LF, влияющим на чтение входных файлов.

Что принято: - Корректировка ожидаемых результатов в ExampleTests.fs. - Выбор стабильной реализации filter.x через оператор сравнения. - Решение учитывать различия CRLF/LF в CI среде.

Что изменено человеком: - Самостоятельно реализованы примеры .x файлов на основе спецификации языка. - Обновлены и расширены ExampleTests.fs для полного покрытия всех примеров.

Связанные файлы: - examples/*.x - tests/Language.Tests/ExampleTests.fs - src/Language/Parser.fs - src/Language/Evaluator.fs - src/Language/Builtins.fs

Связанный PR: #45


Дата: 04.05.2026 Задача: Новые примеры для синтаксического сахара и ленивости

Prompt / темы обращений: Одна сессия, три темы: 1. Обсуждение новых фич для синтаксиса — print, cond, let*, not/and/or, строки. Оценка сложности реализации каждой. 2. Обсуждение более полного покрытия реализации примерами — синтаксический сахар => и let x =, три варианта демонстрации ленивости. 3. Уточнение что trace.x не нужен — --trace это флаг CLI, а не пример.

Ответ ИИ / краткое содержание: - Оценены фичи по соотношению сложность/эффект. Решено пока не брать. - Предложены примеры arrow-lambda.x, let-sugar.x и три lazy файла. - Написаны тесты для всех новых примеров в ExampleTests.fs.

Что принято: - Структура новых примеров. - Тесты в ExampleTests.fs. - Решение не писать trace.x.

Что изменено человеком: - Содержание примеров написано самостоятельно. - Добавлен lazy-error.x — не обсуждался, инициатива автора.

Связанные файлы: - examples/arrow-lambda.x - examples/let-sugar.x - examples/lazy-basic.x - examples/lazy-memo.x - examples/lazy-scope.x - examples/lazy-error.x - tests/Language.Tests/ExampleTests.fs

Связанный PR: #59


Дата: 06.05.2026 Задача: Написание docs/examples.md.

Prompt / темы обращений: Попросил привести в читаемый вид каркас docs/examples.md: добавить краткое описание к каждому примеру, команды запуска и раздел demo scenario для защиты.

Ответ ИИ / краткое содержание ИИ дополнил каждый пример одним-двумя предложениями описания, добавил команды запуска с флагами --ast и --trace, написал раздел demo scenario с порядком показа на защите. Также исправил опечатку: в секции fold стояла ссылка на filter.x.

Что принято - Описания к каждому примеру. - Команды запуска. - Раздел demo scenario. - Исправление ссылки в секции fold.

Что изменено человеком - Структура файла, список примеров, исходный код и результаты — написаны самостоятельно. - Итоговое содержание проверено и скорректировано вручную.

Связанные файлы - docs/examples.md - docs/index.md - README.md

Связанный PR: #73


Дата: 06.05.2026 Задача: Выбор способа публикации документации и настройка GitHub Pages.

Prompt / темы обращений: Обсуждение проблемы с GitHub Pages в classroom-репозитории: форк наследует ограничения организации MAILabs-Edu-2026, Pages недоступен. Поиск workaround для публикации документации.

Ответ ИИ / краткое содержание ИИ предложил три варианта: форк, Netlify/Vercel, клон в личный аккаунт. После того как форк не сработал (Pages наследует ограничения родительского репо), предложен и разобран вариант с клоном в личный публичный репозиторий. Также предложены: конфигурация mkdocs.yml, workflow pages.yml для автодеплоя, исправление битых ссылок в docs/examples.md через sed.

Что принято - Решение клонировать репозиторий в личный аккаунт как публичный. - Структура mkdocs.yml и pages.yml. - Исправление ссылок на файлы примеров через GitHub blob URL. - Добавление ai-usage/04-final-summary.md в nav.

Что изменено человеком - Выбор конкретного варианта (клон вместо форка) — самостоятельное решение. - Публикация и настройка репозитория выполнена самостоятельно. - Исправление команды mkdocs build --strict falsemkdocs build замечено по логу CI.

Связанные файлы - mkdocs.yml - .github/workflows/pages.yml - docs/examples.md - README.md - docs/index.md

Связанный PR: #75