@Fsharp_chat

Страница 68 из 772
Evgeniy
24.04.2017
08:11:58
Ок, принято.

Я с утра тупой. :)

Pavel
24.04.2017
08:12:17
Ну просто Seq.map id - это вообще странно зачем писать.

Friedrich
24.04.2017
08:12:47
Это просто для примера кто-то привёл.

Google
Pavel
24.04.2017
08:13:07
Роман привёл, я поэтому и написал "более реальный" случай использования функции id

Evgeniy
24.04.2017
08:29:59
Seq.fold (flip id) 1 [(+) 2; (*) 4]

Блин, это ужасно.

Надеюсь, так никто не пишет.

Pavel
24.04.2017
08:34:13
А чего ужасного?

Представь, что [ (+) 2; (*) 4] - тебе пришло из клиента, например ты распарсил строчку

Но вообще специально так вряд ли кто-то пишет, само собой.

Evgeniy
24.04.2017
08:35:06
Читать тяжело.

Pavel
24.04.2017
08:35:26
/shrug

Мне понятно, что это значит.

Evgeniy
24.04.2017
08:40:33
Это не значит, что будет понятно остальным.

Pavel
24.04.2017
08:41:01
Остальные могут идти писать на Go, там всё просто и понятно

Evgeniy
24.04.2017
08:41:17
Кек.

Google
Pavel
24.04.2017
08:41:47
Мне вот такая штука понятней, чем цикл, который делает тоже самое

Evgeniy
24.04.2017
08:42:22
Не, сорян.

Это дерьмо. :)

Можно чуть более длинно, но понятнее написать.

Pavel
24.04.2017
08:43:36
Не очень понимаю как.

Evgeniy
24.04.2017
08:45:38
Хотя бы избавиться от (flip id), написать не в point-free.

Будет чуть лучше.

Nikolay
24.04.2017
08:50:22
Короче, похоже в .Net Core 1.1 в очередной раз сломали юнит тесты

И в NUnit никак не починят их

mstest и xunit вроде как работают

Но запуск NUnit можно накостылять через NUnit Lite, вопрос, стоит ли заморачиваться, или переписать лучше под xUnit?

Pavel
24.04.2017
08:56:40
nunit-console не работает что ли?

Nikolay
24.04.2017
09:07:16
Она не кушает новые csproj

Pavel
24.04.2017
09:07:46
А зачем ему .csproj вообще?

Nikolay
24.04.2017
09:07:57
А если пытаться под .dll запустить, не находит какую-то зависимость

Pavel
24.04.2017
09:07:58
Оно не по длл-кам запускается?

https://github.com/nunit/dotnet-test-nunit - это трогал?

Мне просто тоже сейчас предстоит с этим иметь интимную связь.

Update: NUnit now has support for dotnet test, so you no longer have to use NUnitLite. See testing .NET Core RC2 and ASP.NET Core RC2 using NUnit 3.

Google
Nikolay
24.04.2017
09:09:17
https://github.com/nunit/dotnet-test-nunit - это трогал?
Это работает только под .Net Core 1.0

Pavel
24.04.2017
09:09:33
Угу, я уже прочитал. Блин, какой же зоопарк.

Nikolay
24.04.2017
09:10:18
Ну если ты будешь под VS запускать, там вроде они починили

Но F# не запустится в VS :D

https://github.com/nunit/nunit3-vs-adapter/issues/297

Вот можешь почитать

Я вижу смысл в использовании xUnit, т.к. его используют мс, и соответственно всё обновляется вовремя

Evgeniy
24.04.2017
09:12:16
@Dolfik Много тестов там?

А то может переписать.

Nikolay
24.04.2017
09:12:25
Там просто есть FsUnit, это типа враппер над NUnit

Ладно, вечером поковыряю)

Evgeniy
24.04.2017
09:15:01
@Dolfik Можно expecto заюзать.

Nikolay
24.04.2017
09:16:39
Стрёмно такие юзать, пока в .Net не утряслось всё окончательно

Опять 100 раз поменяется и сломается

Да сделаю лучше обёртку для пары методов и ок)

Evgeniy
24.04.2017
09:17:36
Да, окей.

Pavel
24.04.2017
09:19:26
Блин, может реально лучше в сторону Mono посмотреть?

Evgeniy
24.04.2017
09:22:10
@Dolfik Но я надеюсь, что ломать перестанут. Только чинить. :)

Nikolay
24.04.2017
09:23:02
Google
Nikolay
24.04.2017
09:23:19
Он вроде LTS

И всё будет работать

Evgeniy
24.04.2017
09:34:28
@neftedollar Нет, в стандартной библиотеке нету. Сайм не разрешает. :)

Как и curry/uncurry.

Roman
24.04.2017
09:36:03
Как и curry/uncurry.
В это что за зверь?

Evgeniy
24.04.2017
09:36:42
let curry f a b = f (a,b) let uncurry f (a,b) = f a b

> F# has no flip/curry/uncurry operators in the prelude - we did consider them of course in F# 1.x but made a definite decision not to include them. OCaml made the same decision at that time. Code that uses these is often of reduced readability. Not always, but in my experience too often.

Vasily
24.04.2017
09:38:45
К сожалению, подобного рода операции правильны с точки зрения фп, но неправильны с точки зрения применения фп в реальной жизни :)

Roman
24.04.2017
09:40:57
> F# has no flip/curry/uncurry operators in the prelude - we did consider them of course in F# 1.x but made a definite decision not to include them. OCaml made the same decision at that time. Code that uses these is often of reduced readability. Not always, but in my experience too often.
Ну в целом да. Кому надо свои опишет. Другое дело, что в проловине либ своё понапишут и потом читай кучу примеров, в одном swap в другом flip, в третьем myAwesomeFlipFunction let fli = MyAwesomeFlipFunction Так что решение по моему не очень, лучше добавить но не рекомендовать использовать

Evgeniy
24.04.2017
09:41:21
Если добавил, то это уже звучит как рекомендация. :)

Еще определяют вот такой оператор. let inline (^<|) f a = f a

Pavel
24.04.2017
09:42:35
просто (^)

[1..100] |> Seq.filter ^ fun x -> x % 2 = 0

Evgeniy
24.04.2017
09:43:15
Даже так.

Pavel
24.04.2017
09:44:03
Ну это $ хаскельный, но $ переопределить в F# нельзя

Google
Evgeniy
24.04.2017
09:49:15
Ага.

Сайм тоже не одобряет.

@neftedollar В любом случае, даже если все это будет в стандартной библиотеке, никто не мешает определить еще больше кастомных операторов. :)

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

Vasily
24.04.2017
10:01:44
У энтерпрайза к коду требования еще жестче, кстати

Поэтому не надо туда всякую магию тащить, не слишком понятную обычным токарям - фрезеровщикам

Кстати, есть ли внятный code style для f#?

Pavel
24.04.2017
10:03:29
Вроде нет, все как хотят пишут

Vasily
24.04.2017
10:03:40
Ну типа там использовать нормально именованные функции вместо переопределения экзотических обераторов типа fishbone этц

Pavel
24.04.2017
10:03:42
У меня бомбит от индента в два пробела

Vasily
24.04.2017
10:03:54
Индент хрен бы с ним

Это дело десятое

Pavel
24.04.2017
10:04:03
что такое фишбон?

kleisli arrow?

Vasily
24.04.2017
10:04:13
»=»

Pavel
24.04.2017
10:04:17
>=>

Vasily
24.04.2017
10:04:20
Ну типа того

Roman
24.04.2017
10:04:40
[1..100] |> Seq.filter ^ fun x -> x % 2 = 0
Ух ты. Единственный язык где можно использовать еще меньше скобок

Evgeniy
24.04.2017
10:05:01
Vasily http://fsharp.org/specs/component-design-guidelines/

Есть вот такой документ.

Vasily
24.04.2017
10:05:16
О, кстати, точно

Страница 68 из 772