Форум программистов, компьютерный форум, киберфорум
Наши страницы
Haskell
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
hardentoo
127 / 26 / 1
Регистрация: 10.10.2017
Сообщений: 32
1

Повторяющийся код

20.05.2018, 02:44. Просмотров 1085. Ответов 20

Есть у меня следующий код

Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
data Command                                                                                                                                                                                                                                              
  = Fetch Pkg                                                                                                                                                                                                                                             
  | Unpack Pkg                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
  | Configure Pkg                                                                                                                                                                                                                                         
  | Compile Pkg                                                                                                                                                                                                                                           
  | Install Pkg
 
type Pkg = String                                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                          
fetch :: Parser Command                                                                                                                                                                                                                                   
fetch =                                                                                                                                                                                                                                                   
  Fetch <$>                                                                                                                                                                                                                                               
  strOption                                                                                                                                                                                                                                               
    (long "fetch" <> short 'f' <> metavar "ebuild" <> help "fetch ebuild")                                                                                                                                                                                
                                                                                                                                                                                                                                                          
unpack :: Parser Command                                                                                                                                                                                                                                  
unpack =                                                                                                                                                                                                                                                  
  Unpack <$>                                                                                                                                                                                                                                              
  strOption                                                                                                                                                                                                                                               
    (long "unpack" <> short 'u' <> metavar "ebuild" <> help "unpack ebuild")                                                                                                                                                                              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
configure :: Parser Command                                                                                                                                                                                                                               
configure =                                                                                                                                                                                                                                               
  Configure <$>                                                                                                                                                                                                                                           
  strOption                                                                                                                                                                                                                                               
    (long "configure" <> short 'c' <> metavar "ebuild" <> help "configure ebuild")                                                                                                                                                                                                                                                                                                                                                                                                                       
                                                                                                                                                                                                                                                          
compile :: Parser Command                                                                                                                                                                                                                                 
compile =                                                                                                                                                                                                                                                 
  Compile <$>                                                                                                                                                                                                                                             
  strOption                                                                                                                                                                                                                                               
    (long "compile" <> short 'b' <> metavar "ebuild" <> help "compile ebuild")                                                                                                                                                                            
                                                                                                                                                                                                                                                          
install :: Parser Command                                                                                                                                                                                                                                 
install =                                                                                                                                                                                                                                                 
  Install <$>                                                                                                                                                                                                                                             
  strOption                                                                                                                                                                                                                                               
    (long "install" <> short 'i' <> metavar "ebuild" <> help "install ebuild")
Видно, что код имеет повторяющуюся структуру, а именно функции практически одинаковы, и я хочу его компактифицировать, чтобы эту структуру каждый раз не повторять, пока знаний haskell не хватает. Как наиболее просто его компактифицировать в haskell, что именно использовать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2018, 02:44
Ответы с готовыми решениями:

Повторяющийся код
Здравствуй, уважаемые форумчане! Я нуб в написании кода, поэтому прощу помощи. ближе к делу....

Убрать повторяющийся код
У меня в коде есть много одинаковых участков, я вынес их в отдельный класс и сделал из каждого...

Как упростить повторяющийся код
Всем добрый вечер. Есть два куска кода, которые отвечают за автокоплит допустим городов и улиц. У...

Повторяющийся код, как сделать короче?
Ребят, являюсь очень новичком в пхп. Встретился с проблемой где нужно удалить повторяющийся код, и...

Как лучше вынести повторяющийся код?
Есть некоторый код который повторяется в разных методах, хоть он и небольшой, но это начинает...

20
Catstail
Модератор
24812 / 12611 / 2300
Регистрация: 12.02.2012
Сообщений: 20,522
22.05.2018, 10:14 21
hardentoo, вот. Я ожидал этого. А теперь вопрос - что важнее: наглядность или экономия 2-3 строк? По-моему - первое. И не надо писать: "Для меня этот код нагляден" - через 2-3 мес. ощущение будет другим.
1
22.05.2018, 10:14
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2018, 10:14

Как оптимизировать повторяющийся код html?
Есть такой код: &lt;div id=&quot;file0&quot; style=&quot;display:block&quot; onClick=&quot;vybor_object(this.id);...

Нужно повторяющийся код оформить функцией - что принимать параметром?
Пытаюсь написать тест на знание творчества Тургенева. Если ответ правильный - то он выделяется...

Запрет статического вызова или повторяющийся код в каждом методе
Доброго времени суток. Есть некий класс, который требует для работы дополнительные данные. Например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.