кстати раз у нас всего два возможных значения для Command, то можно создать перечисление
data Command = Help | Repeat
этот тип обязательно должен быть полиморфным? эта полиморфность где-то используется?
data Data t i = Msg t | Gif t | Command t | KeyboardMenu | Query i deriving (Show, Eq)
не очень нравится это дефолтное значение
defaultMessage :: Message
defaultMessage = Message {mID = ID (-1), mUser = User (-1), mData = Msg "fake message for -Wall and -Werror"}
Лучше использовать Nothing чем такие странные дефолтные значения как Msg "fake message for -Wall and -Werror", так как мы можем считать что у нас есть сообщение, но по факту его нет
Это внутренние функции в разных модулях, которые их не экспортируются. Надо создать новый модуль, поместить туда общую для них функцию и импортировать ее из других модулей вместо них?
Полиморфность не используется сейчас, сделал для возможного расширения в будущем, когда в сообщении могут быть данные, которые удобней представить иным типом.
Установить новое значение повторов можно либо написав текст (Text), либо в версии телеграм нажав кнопку (DataFromButton). Обработчик один на оба случая.
1 Да можно так, если в коде есть еще повторяющиеся фрагменты, можно поместить их туда
2 Ок пусть будет, но вообще заранее обобщать не надо
3 Хорошо, понял
makeMessage
продублированаdata Command = Help | Repeat
этот тип обязательно должен быть полиморфным? эта полиморфность где-то используется?
data Data t i = Msg t | Gif t | Command t | KeyboardMenu | Query i deriving (Show, Eq)
не очень нравится это дефолтное значение
Лучше использовать
Nothing
чем такие странные дефолтные значения какMsg "fake message for -Wall and -Werror"
, так как мы можем считать что у нас есть сообщение, но по факту его нетпо моему здесь можно использовать
readMVar
здесь можно упростить с помощью
map
странно, почему у тебя число повторов может быть как числом так и текстом?
Regularly reuest a new message