Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2013, 01:33   #1
happypsu
 
Регистрация: 01.04.2012
Сообщений: 3
По умолчанию как заменить @ (Haskell)

здравствуйте!нужна помощь в таком вопросе, есть код.
Выполняются следующие операции:
1) getALNum, возвращающая из списка нажатий только нажатия алфавитно-цифровых клавиш.

2) getRaw, возвращающая строку, составленную из нажатых символов без учета информации о Shift и CapsLock.

3)isCapsLocked, по последовательности нажатий определяющая, остался ли после нее режим CapsLock в активированном состоянии.

4) getString, переводящая последовательность нажатий в строку.

применены функции высшего порядка. Как во второй строке можно заменить @, может возможно иначе выполнить эту функцию?

также как-то не могу понять для чего функция aux и можно ли её заменить?

Код:
import Char
data Key = Shift | CapsLock | ALN Char deriving Show

getALNum :: [Key] -> [Key]
getALNum xs = [x |x @ (ALN _) <- xs]

getRaw :: [Key] -> String
getRaw xs = [x | ALN x <- xs]

isCapsLocked :: [Key] -> Bool
isCapsLocked xs = foldl aux False xs where
  aux a key = 
    case key of 
      CapsLock -> not a
      _        ->     a

getString'' :: [Key] -> String
getString'' xs = reverse result where
  aux (str, caps, shift) key  = case key of 
    ALN c -> 
      ((if caps == shift 
        then toLower c  
        else toUpper c) : str, caps, False)
    Shift    -> (str,     caps, True)
    CapsLock -> (str, not caps, False)
    
  (result, _, _) = foldl aux ([], False, True) xs
буду очень благодарна за помощь)
happypsu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Haskell KrotikDJ Помощь студентам 5 27.05.2013 20:49
как заменить . на , sasha_prof Microsoft Office Word 4 23.07.2012 12:37
как заменить? skauzer_blr Помощь студентам 2 13.05.2012 21:36
Haskell Katech Свободное общение 5 12.07.2009 23:40
Haskell Анастасия52 Помощь студентам 0 05.05.2009 14:09