- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
data Mode = Start | Read | Skip | End
data State = State Mode String String [String]
space c = elem c [' ', '\n', '\r', '\f', '\t', '\v', '\160']
end r = State End "" "" r
skip t r = State Skip t "" r
get t w r = State Read t w r
start t = State Start t "" []
step (State Start at@(t:ts) w r)
| space t = step $ skip at r
| otherwise = step $ get at w r
step (State Read at@(t:ts) w r)
| space t = step $ skip at $ r ++ [w]
| otherwise = step $ get ts (w ++ [t]) r
step (State Skip at@(t:ts) _ r)
| space t = step $ skip ts r
| otherwise = step $ get at "" r
step (State Start "" _ r) = step $ end r
step (State Read "" w r) = step $ end $ r ++ [w]
step (State Skip "" _ r) = step $ end r
step (State End _ _ r) = r
words' text = step $ start text
Решил все-таки выложить этот позор. Если есть предложения по улучшению - с радостью выслушаю.
Зачем она в хаскеле, если тут и так все ленивое?
https://github.com/failuref
Постучи в личку там.
1) У многих людей есть другие занятия, помимо говнокодика;
2) Ну пока там не особо много кода, придираться особо не к чему;
3) Лови пулл риквест про displayBoard.
3) Поймал.
Чую на илитном хацкиле кода будет больше, чем в известном килобайтном шедевре, но он будет такой же непонятный. А еще ИИ будет слабее и медленее - иммутабельное мудачьё не может в скорость.
Елси там конечно нет готовой функции - chess.
Ибо смотрю в код а там какое-то очевидное гогно и копипаст.
Это так и надо? Ведь line и столбец суть одинаковы.
код почти один, а конструкторы разные, поэтому приходится копипастить
>приходится копипастить
Не верю. Либо кто-то что-то не осилил (в чем я гораздо больше уверен), либо хацкил и впрямь кал.
>код почти один, а конструкторы разные
Ну и нахуй тогда функцианальщина нужна? Если нельзя скомпоновать как надо?
Ну можно вот так например:
http://ideone.com/dD62bK
При наличии элементарных зайчатков разума.
Гумнота и на хацкиле будет копипастить. Потому что головной мозг ей заменяет известная субстанция.
Исправляем
http://ideone.com/pEVLy4
на
http://ideone.com/cReNkM
Чтобы не лазить по ссылкам выше, то код таков:
на В итоге заменили 2 строки похожего кода на 2 строки не похожего.
Ты вот покажи на реальном примере, как убрать копипасту:
Вот типичный пример:
http://ideone.com/Fi3Uqv
Предложи способ убрать копипасту не считая случая введения отдельной функции извлечения, которая далеко не всегда пригодна для извлечения. Для полноты картины, представь, что функции f очень сложные для случая KoKo и KoKoKo.
Как видишь очевидные варианты не работают, тк хаскель заставляет копипастить:
http://ideone.com/IQlDov
http://ideone.com/UWFdtH
Ну пример маленький, чтобы не отвлекать от сути. То есть я правильно понимаю, убрать эту копипасту хацкель не позволяет?
Эту - нет.
> Для полноты картины, представь, что функции f очень сложные для случая KoKo и KoKoKo.
Были бы сложные и одинаковые - нужно было бы вынести в отдельную функцию (что впрочем тут и сделано, show это сложная функция).
Да это понятно, но это лишь от убогости мышления копипастера. Любой вменяемый человек написал бы вменяемо.
Конечно больше. Я плохо хаскель знаю.
> А еще ИИ будет слабее и медленее
Естественно
> Ибо смотрю в код а там какое-то очевидное гогно и копипаст.
Я просто как начинаю гнаться за красивым кодом в итоге все стираю и переписываю. Так что решил сразу писать похуйкак.
И да, bormand уже поправил код.
http://ideone.com/dlZZCH
http://ideone.com/lSdwuQ
https://bitbucket.org/dibblego/haskell-course L03
Концептуально это отделные символы. Такая запись будет запутывать.