(4 курс ФИИТ) Функциональное программирование


#1

Открыта запись на курс CS314. Функциональное программирование. При записи требуется ввести кодовое слово, определяющее вашу группу: 48 или 49 для групп 4.8 и 4.9 соответственно. На странице курса пока можно увидеть программу прошлого года, предварительный план лекций и лабораторных работ на текущий год (в плане возможны изменения), учебную карту дисциплины, а также список литературы по курсу.

В рамках курса будет использоваться сайт GitHub, поэтому, если вы на нём ещё не зарегистрированы, обязательно зарегистрируйтесь. На странице курса (в разделе «Лабораторные работы») имеется элемент «Аккаунт на гитхабе», в котором необходимо оставить свой логин на гитхабе.


(4 курс ФИИТ) Функциональное программирование
#2

У меня не получается полностью записаться из-за того, что не предлагается ввести кодовое слово.


#3

Аналогично.


#4

Ну, попробуйте сейчас.


#5

Получилось.


#6

Напоминаю о необходимости записаться на курс (кодовое слово 48 или 49 в зависимости от группы). Также напоминаю, что в рамках курса будет использоваться сайт GitHub, на котором необходимо зарегистрироваться и оставить свой логин в элементе «Аккаунт на гитхабе» на странице курса.


#7

Я ещё пару дней подожду и начну угрожать незарегистрированным.


#8

Лекция на этой неделе, согласно расписанию, начнётся в 8:00, просьба не опаздывать.


#9

Для того, чтобы в консоли ghci нормально отображалась кириллица, необходимо сделать следующее (при условии, что установлена Haskell Platform):

  1. Установить пакет wl-pprint:

    cabal install wl-pprint

  2. Создать файл .ghci (расположение) со следующим содержимым:

    import System.IO import Text.PrettyPrint.Leijen let upprint a = (hPutDoc stdout . pretty) a >> putStrLn “” :set -interactive-print=upprint

  3. Если не нравится получающееся в результате длинное приглашение к вводу (с именами загруженных модулей), можно дополнительно приписать к .ghci:

    :set prompt "ghci> "

  4. Теперь можно пользоваться интерпретатором ghci с поддержкой кириллицы:

    $ ghci GHCi, version 7.10.1: http://www.haskell.org/ghc/ :? for help ghci> "Привет, мир" Привет, мир ghci>

Полезно понимать причины поведения интерпретатора по умолчанию: вывод значений выражений выполняется функцией print, которая вызывает для своего аргумента функцию show. Последняя была определена более 20 лет назад и с тех пор практически не менялась, она заменяет все не-ASCII символы на их коды. В предлагаемом решении мы фактически подменяем функцию print в ghci, что и позволяет видеть кириллицу, а заодно и любые юникодные символы (разумеется, при наличии шрифтов) без изменений.


#10

A post was split to a new topic: (4 курс ФИИТ) Функциональное программирование


#11

Напоминаю, что завтрашняя лекция начинается в 08:00.


#12

В задании 3.10 лабораторной 2 неправильный тест:

-- Должно быть True test_slide = slide (+) [1,2,3,4] == [3, 5, 7] && slide (*) [1,2,3] == [2, 5]


#13

В задании task2-points.hs третьей лабораторной работы к определению типа Quarter необходимо добавить автоматическое порождение экземпляра класса типов Eq:

data Quarter = First | Second | Third | Fourth | Axis
    deriving Eq

#14

На странице курса появилось дополнительное задание про приложение Haskell к изобразительному искусству :art:.


#15

Напоминаю, что завтра лекция с 08:00.


#16

Напоминаю, что начиная с завтрашнего дня лекции будут читаться с 09:00 тремя академическими часами с двумя пятиминутными перерывами.


#18

2 posts were split to a new topic: Как понимать сечения композиции


#19

У меня появился вопрос по слайдам к лекции 10: зачем нужен EmptyDataDecls, если примеры работают без него? Я проверил для безопасного списка (слайд 47/55). Попытался найти что-то в руководстве к 7.10.2: но там вроде всё ещё говорят, что нужно писать. Как это объяснить?


#20

Похоже, что это расширение вошло в стандарт Haskell 2010, а текущие версии GHC почти во всём ему следуют.


#21

На странице курса опубликованы общие условия для выполнения проектных заданий и открыта возможность регистрации команд. Проекты разбираются по принципу «первый пришёл — первый выбрал», выполнение одного и того же проекта разными командами не допускается.