@haskellru

Страница 1102 из 1551
Shorty(Ale Chapa) Manskiy
19.04.2018
08:42:56
они там будут сверху, а не снизу. Так же?

я незнаю других языков, в которыз есть что-то на подобии where.
я не писал, что не знаю языков в которых есть локальные функции, или лямбды.

Aleksey
19.04.2018
08:44:51
foo = let bar x = x * 2 in bar 42 vs foo = bar 42 where bar x = x * 2 никакой разницы между "сверху" и "снизу" с точки зрения тестирования

Shorty(Ale Chapa) Manskiy
19.04.2018
08:44:52
вот про что я:

Google
Shorty(Ale Chapa) Manskiy
19.04.2018
08:44:52
сложнее, три однострочника с сигнатурами все читаются, а иерархическая структура позволяет не читать то, что не надо, пока не разбираешься в конкретных деталях

если все функции топлевелные - трудно понять что можно не читать

Ilya
19.04.2018
08:45:39
покажи как?
def sum(x, y): def sum_x(z): return x+z return sum_x(y) print(sum(4,5))

Aleksey
19.04.2018
08:45:56
^ это "let" по питонячьи :)

Shorty(Ale Chapa) Manskiy
19.04.2018
08:46:37
А уж языков с let - полно
let вовсе не "поднимает язык на 10 порядков".

Aleksey
19.04.2018
08:47:08
Разницы с точки зрения тестирования нет.

Ilya
19.04.2018
08:47:27
let вовсе не "поднимает язык на 10 порядков".
Не вижу разницы между let и where в вопросе тестирования не-top-level функций

Shorty(Ale Chapa) Manskiy
19.04.2018
08:47:40
Разницы с точки зрения тестирования нет.
нет, а вот с читаемостью есть.

Aleksey
19.04.2018
08:47:51
Да блин!

Shorty(Ale Chapa) Manskiy
19.04.2018
08:48:02
про это я и говорю.

Aleksey
19.04.2018
08:48:04
Мы про читаемость, мифические 10 порядков, или всё же про тестирование?

Google
Shorty(Ale Chapa) Manskiy
19.04.2018
08:49:04
я не хочу писать непонятный код. я хочу писать тестируемый код. Но вот мои "хотелки" не совместимы, оказывается.

Aleksey
19.04.2018
08:50:09
Как тестировать вложенную функцию без контекста, который она замыкает?

Ilya
19.04.2018
08:50:15
Что-то о пустом говорим. Содержательно было бы, если бы ты показал, как в других языках тестируют функции внутри let/where, а вот в хаскеле типа так нельзя

Dmitry
19.04.2018
08:50:34
хорошая читаемость заменяет тестирование ?

Aleksey
19.04.2018
08:50:49
Конечно нет

"Глаз замыливается" и прочие человеческие ошибки сильно понижают полезность "тестирования глазами"

Alexander
19.04.2018
08:51:02
лучший способ бесполезно увеличить sloccount

Dmitry
19.04.2018
08:51:48
Случайно наткнулся: https://stackoverflow.com/jobs/173703/senior-haskell-software-developer-genius-for-secucloud (Если не по правилам, скажите, я удалю)

Правда, удивляет: Role: System Administrator

Alexander
19.04.2018
08:52:16
а так взять вынес кучу примитивных комбинирубщих функций в топлевел, добавил бесполезных тестов и душа радуется

и метрики

Ilya
19.04.2018
08:53:02
пфффф "другими языками" можно любой недостаток оправдать
Так вопрос, есть ли они эти другие языки

Где волшебным образом локальные функции покрываются юнит-тестами

Aleksey
19.04.2018
08:53:46
Можно взять язык, не умеющий в замыкания, но умеющий локальные функции :)

Shorty(Ale Chapa) Manskiy
19.04.2018
08:53:46
Что-то о пустом говорим. Содержательно было бы, если бы ты показал, как в других языках тестируют функции внутри let/where, а вот в хаскеле типа так нельзя
если другие языки не могут, я то тут причем? я говорю вот о чем - если я знаю про where, то без него не хочу писать код. Но при этом страдает тестируемость. И вот, я выбираю читаемость.

Aleksey
19.04.2018
08:54:12
Что-то тут переоценено

Либо читаемость, либо тестируемость

A64m
19.04.2018
08:54:26
Где волшебным образом локальные функции покрываются юнит-тестами
если такого языка нету (в чем я не уверен совсем), это не значит, что этого не надо, что это не недостаток

ну и что волшебного, как это в принципе можно делать я выше писал, если это не работает, то это проблема конечно

Google
A64m
19.04.2018
08:55:05
(не для меня, правда, но это не важно)

Alexander
19.04.2018
08:55:29
на TH же можно наверняка

Alexander
19.04.2018
08:56:06
но вообще я не вижу большой необходимости в фиче

причем не ясно почему это недостаток, и.к. те кто хочет писать тесты на все такие функции могут это делать

причем их психологические проблемы не проецируются на всех программистов

Ilya
19.04.2018
08:57:52
Aleksey
19.04.2018
08:58:51
Если речь про анализ AST и подкладывание замыкаемых переменных, то это такое

Не стал бы таким пользоваться

Aleksey
19.04.2018
09:00:05
"ну такое", как нынче говорят. Такое себе

Alexander
19.04.2018
09:02:46
не могут, так что недостаток
where foo = my_testable_toplevel_foo

и вперёд

A64m
19.04.2018
09:06:51
where foo = my_testable_toplevel_foo
ну, это не то что тут требовали

Alexander
19.04.2018
09:08:39
здесь говорили что вере плохо ведь непотестировать

вроде

A64m
19.04.2018
09:09:56
да, но и о том, чтоб локальных по смыслу функций на топлевеле не было

это тут не выполняется

Google
Leonid
19.04.2018
09:10:51
where foo = my_testable_toplevel_foo
прям как в питоне делают. правда там для скорости

IC
19.04.2018
09:11:13
> Allow hyphenated (à la scheme) identifiers like example-identifier, which some of us prefer to uglyCamelCase. ?

на сколько это тяжелее парсить?

Leonid
19.04.2018
09:13:41
- - валидный оператор. и так от нетагивных целых литералов проблемы

т.е. foo - bar /= foo-bar

IC
19.04.2018
09:14:40
но в итоге это проблемы токенизатора ведь?

Leonid
19.04.2018
09:14:55
да. но главное токенизатор в головах!

Admin
ERROR: S client not available

IC
19.04.2018
09:15:30
кто не отделяет операторы пробелами в коде - тот токенизатор с проблемами!

Aleksey
19.04.2018
09:18:36
> :{ Prelude| do Prelude| print 1 Prelude| do do Prelude| print 2 Prelude| do do Prelude| print 3 Prelude| do do do do Prelude| print "doh" Prelude| :} 1 2 3 "doh"

Утро узнавания интересностей об отступах в хаскеле

let x = let y = 40 in y + 1 z = 1 in x + z

Denis
19.04.2018
09:19:17
du du hast

Yuuri
19.04.2018
09:40:39
Хм, а в TH можно сделать или имитировать, гм, "отложенную" вклейку? То есть сделать локально вроде foo a b = bar b where bar c = qux a $(generateMockup 'bar) и получить декларацию bar без замыканий где-то дальше на топлевеле.

Dmitry
19.04.2018
10:22:59
A splice can occur in place of - an expression; the spliced expression must have type Q Exp - a pattern; the spliced pattern must have type Q Pat - a type; the spliced expression must have type Q Type - a list of declarations at top level; the spliced expression must have type Q [Dec]

декларации - только на top level

Yuuri
19.04.2018
10:24:59
А в Q нельзя какой-то custom state запихнуть, чтобы в конце файла извлечь?

IC
19.04.2018
10:26:58
@Yuu_chan какую задачу ты решаешь?

Alexander
19.04.2018
10:28:42
вообще есть запихивание функций в топлевел

в inline-java используется, но сходу не скажу как

Google
Denis
19.04.2018
10:30:48
https://wiki2.org/en/Lambda_lifting

Dmitry
19.04.2018
10:42:13
Наверное, на топлевел не написать $(generateMockup 'foo 'bar) так как `bar не определена. Зато можно, наверное, скажем, $(generateMockup 'foo 0) - первый из where. Только с замыканиями возиться надо

/stat@combot

Combot
19.04.2018
10:42:40
combot.org/chat/-1001043143583

Yuuri
19.04.2018
11:07:09
@Yuu_chan какую задачу ты решаешь?
Описанную выше - поиметь возможность реплить и тестить локальные функции

A64m
19.04.2018
11:30:07
проверил, работает -- | -- >>> :step foo 3 -- ... -- >>> bar 2 -- 50 foo :: Int -> Int foo x = bar x where bar y = x + y ### Failure in src/Main.hs:7: expression `bar 2' expected: 50 but got: 5 Examples: 2 Tried: 2 Errors: 0 Failures: 1

kana
19.04.2018
11:31:17
так-так-так, это что

я думал тесты через примеры в доке очень крутая фича

Dmitry
19.04.2018
11:41:23
Я не понял. Что работает и что за фича? Это haddock что ли запускает?

A64m
19.04.2018
11:41:56
doctest

Sergey
19.04.2018
11:44:00
в эликсире такая тож из коробки есть

Yuuri
19.04.2018
11:44:12
И в rust

Sergey
19.04.2018
11:44:18
а, да кстати)

kana
19.04.2018
11:44:44
такая много где есть, но вот что она есть в хаскеле я даже не ожидал даже не могу представить как она работает

Yuuri
19.04.2018
11:45:18
В хаскеле есть всё ?

A64m
19.04.2018
11:45:21
вы вчера тут скриншот доктеста из линз постили

kana
19.04.2018
11:45:38
ну я думал это тупо примеры

A64m
19.04.2018
11:48:13
запускает ghci, загружает в него файл, вырезает из комментариев код, запускает, сравнивает выхлоп с тем что в комментариях

так и работает

Страница 1102 из 1551