/SPBU_Homework_Sem4

GG FP

Primary LanguageF#Apache License 2.0Apache-2.0

  • Домашняя работа 1. 14.02.20

    • Посчитать факториал

      1.1

    • Посчитать числа Фибоначчи (за линейное время)

      1.2

    • Реализовать функцию обращения списка (за линейное время)

      1.3

    • Реализовать функцию, которая принимает на вход n и m и возвращает список из степеней 2 от n до n + m

      1.4

    • Реализовать функцию, которая выдает первую позицию вхождения заданного числа в список

      1.5

  • Домашняя работа 2. 21.02.20

    • Реализовать три варианта функции, подсчитывающей количество четных чисел в списке (с использованием стандартных функций map, filter, fold). Использование рекурсии не допускается, зато нужен FsCheck для проверки функций на эквивалентность

      2.1

    • Реализовать функцию, применяющую функцию к каждому элементу двоичного дерева и возвращающую новое двоичное дерево, каждый элемент которого --- результат применения функции к соответствующему элементу исходного дерева (map для деревьев)

      2.2

    • Посчитать значение дерева разбора арифметического выражения, заданного через вложенные discriminated union-ы

      2.3

    • Реализовать функцию, генерирующую бесконечную последовательность простых чисел

      2.4

  • Домашняя работа 3. 28.02.20

    • Выполнить бета-редукцию λ-терма ((λa.(λb.b b) (λb.b b)) b) ((λc.(c b)) (λa.a)). Решение (в виде последовательности преобразований) набрать в TeX-е и выложить файл .tex на GitHub.

      3.1

    • Докажите, что S K K = I.

      3.2

    • Реализовать интерпретатор лямбда-выражений, выполняющий бета-редукцию по нормальной стратегии. Лямбда-выражения задаются через размеченные объединения. Должна поддерживаться альфа-конверсия для избежания захвата свободных переменных.

      3.3

  • Домашняя работа 4. 06.03.20

    • Реализовать функцию, которая по произвольной строке проверяет корректность скобочной последовательности в этой строке. Скобки бывают трёх видов.

      4.1

    • Записать в point-free стиле func x l = List.map (fun y -> y * x) l.

      4.2

    • Написать программу - телефонный справочник. Она должна уметь хранить имена и номера телефонов, в интерактивном режиме осуществлять следующие операции:

      • выйти
      • добавить запись (имя и телефон)
      • найти телефон по имени
      • найти имя по телефону
      • вывести всё текущее содержимое базы
      • сохранить текущие данные в файл
      • считать данные из файла

      4.3