@Fsharp_chat

Страница 447 из 772
Tony
06.01.2018
19:34:34
а какая задача хоть?

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

Aminion
06.01.2018
19:36:09
Ну или за тебя весь граф составляется, знай только регестрируй соответвия, и лайфтайм, или делай все в ручную

Tony
06.01.2018
19:38:03
ну ты ж все равно указываешь правила, как он составляется. не то чтобы это значительно по объему отличается от ручного составления.

Google
Pavel
06.01.2018
19:38:37
Но что если зависимости требуют другие зависимости, и если делать в ручную, то для каждой нуждающейся функции, даже если заисимости совпадают
Хорошая композиция решает эти проблемы. Тут надо отталкиваться от проблемы, а не пытаться сразу впилить ioc или другой механизм для построения зависимостей. Простой вариант : partial application. Если простой вариант не подходит по тем или иными причинам, то есть более сложные : ридер монада, фри монада

Владислав
06.01.2018
19:45:11
подскажите, плиз, почему результат разный

let (./.) x y = (x |> float) / (y |> float) let testCom1 x = floor ((x + 1) ./. 2) let testCom2 = (+) 1 >> (./.) 2 >> floor

Evgeniy
06.01.2018
19:46:23
Владислав У тебя отличается порядок деления.

Владислав
06.01.2018
19:47:10
не понимаю почему(

я же пишу добавить 1 потом поделить

Evgeniy
06.01.2018
19:49:27
Владислав (./.) 2 — подставляешь 2 в качестве первого аргумента.

Если хочешь оставить определение (./.), но получить правильный ответ, то тебе нужно упороться по flip. let flip f x y = f y x

Владислав
06.01.2018
19:51:26
окей, спасибо

Evgeniy
06.01.2018
21:04:51
Привет.

Ну, если посчитать всех ботов и молчунов, то нас уже три сотни.

Владислав
06.01.2018
21:34:29
А что значит вот такое? *type Socket with*

Evgeniy
06.01.2018
21:53:35
А что значит вот такое? *type Socket with*
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/type-extensions

Google
Xak
07.01.2018
05:03:42
(write(eval (cons (get-alias 747) `(( append (setq a `((nil))) a )) ))) — и вы ещё спрашиваете, при чём тут аниме.

Xak
07.01.2018
06:53:45
мм, а я-то думал, фшарперы – это такие агенты лиспа под прикрытием

Pavel
07.01.2018
06:56:44
агенты лиспа это внезапно жабаскриптеры

JavaScript Перед Бренданом Эйхом, нанятым в компанию Netscape 4 апреля 1995 года, была поставлена задача внедрить язык программирования Scheme или что-то похожее в браузер Netscape.

Xak
07.01.2018
06:58:55
я при связке лисп+яваскрипт сразу вспоминаю убойный доклад https://www.youtube.com/watch?v=LcQXXhNT__I

пояснение за лисп и феерическая расстановка точек над ним же начинается с 5:02



Klei
07.01.2018
08:21:45
Ну вообще некоторые из присутствующих сбежали бы на лисп, если бы он мог полноценно в .NET.

Aleksey
07.01.2018
08:22:35
Конечно нет

Лисп - динамически типизирован

Klei
07.01.2018
08:25:18
Это единственный язык, на котором мне почему то не претила динамика. Но ничего крупного я на нем не писал.

Igor
07.01.2018
09:10:27
Это единственный язык, на котором мне почему то не претила динамика. Но ничего крупного я на нем не писал.
Тоже прям чувствую родство F# с Clojure, ведь они оба: - хостед и благодаря интеропу, имеют огромный набор библиотек от платформы - пропагандируют простое ФП на чистых функциях и персистентных коллекциях - не выкручивают руки, а позволяют пользователю самому решать где pure, а где IO (еще и оба кроссплатформенные и компилятся в JS) Единственное, я ленивый и не люблю писать тесты, поэтому стат. типизированный F# для меня предпочтительнее ?

Aminion
07.01.2018
09:24:09
Да, радует мультипарадигма. Можно ооп юзать для управления зависимостями, а фп для непосредственной доменной логики

Igor
07.01.2018
09:30:48
Ну конечно же они не 100% такие же (они не женерик как в кложе), но тоже персистентные

Кстати недавно узнал что на кложе тоже пишут моб. приложения (reactnative) на TEA архитектуре. Прям как я сейчас на F#. А еще RN оказывается можно запускать в браузере (react-native-web). Те можно писать кросплатформенные приложения (mobile/desktop) прям на F# + Elmish ? (+electron)

Igor
07.01.2018
09:47:33
Неправильно назвал? Ну поправь тогда, имелось ввиду что можно записывать значения любых типов

Google
Klei
07.01.2018
09:53:16
Обычно дженериками называют как раз коллекции (и типы вообще) которые можно типизировать <T [,T1,...]>, а нетипизированные если как то и называются, то я не в курсе.

Igor
07.01.2018
10:02:35
Что-то я тоже пока ничего умнее non-generic не нахожу

Evgeniy
07.01.2018
10:15:59
Привет.

Pavel
07.01.2018
10:16:45
Есть отдельная библиотека.
Не подскажешь как называется?

Evgeniy
07.01.2018
10:54:44
Не подскажешь как называется?
https://github.com/fsprojects/FSharpx.Collections

PersistentVector, PersistentHashMap.

Там ещё кто-то RRB-Tree пишет, надо спросить, как дела.

Pavel
07.01.2018
11:01:56
Igor
07.01.2018
11:12:10
PersistentVector, PersistentHashMap.
А чем они лучше system.collection.immutable?

Evgeniy
07.01.2018
11:32:52
А чем они лучше system.collection.immutable?
Я не разбирался, если честно. Просто вспомнили кложу, а я припомнил библиотеку.

A64m
07.01.2018
11:33:26
меньше высота дерева

Igor
07.01.2018
12:26:25
Потому что Xamarin изначально заточен по MVVM А очень хотелось ФП архитектуры для UI, типа TEA, которая есть в Fable Elmish. Сейчас в Xamarin появился свой проект TEA архитектуры, но я уже втянулся в Fable (не переписывать же все реально). P.S. плюс пишу в легком VSCode без всяких VS/VSforMac

Igor
07.01.2018
13:41:06
Bogdan
07.01.2018
20:23:43
Привет всем!



может кто-то объяснить если не сложно

Google
Bogdan
07.01.2018
20:24:39
пример с книги



Anna
07.01.2018
20:25:45
Скобки потому что в F# не бывает функций без аргументов

и у всех функций аргумент ровно один

У этой аргумент типа unit

Bogdan
07.01.2018
20:26:28
оо

круто, спасибо большое

Anna
07.01.2018
20:30:13
Да не за что. Надеюсь, не приврала ничего на ночь глядя

Andrew
07.01.2018
20:31:30
@d_arlekino а что за книга?

Bogdan
07.01.2018
20:31:48
Сошникова

Сергей
07.01.2018
20:34:09
Сошникова
да там у меня тоже что то не компилилось с complex вроде

Bogdan
07.01.2018
20:34:27
Да да)

У этой аргумент типа unit
Хотя там написано, что они нужны изза изменентя внешнего объекта

Это верно?

Bogdan
07.01.2018
20:36:21
Ну там просто и readlines с ними, но когда упускакшь никто не ругается вроде

А с recread не работает так

Anna
07.01.2018
20:47:15
Я короче не всамделишный F#щик, просто сижу тут смотрю, что умные люди пишут. Но сдаётся мне, я поняла в чём прикол. Но это надо самой код набирать, чтобы проверить

Bogdan
07.01.2018
20:49:48


Так что все ок)

Google
Bogdan
07.01.2018
20:52:11
А со скобочками будет функция

Ток дошло)

Tony
07.01.2018
20:52:45
у функции должны быть параметры. если параметров как бы нет, то вместо них должен быть один «параметр» — unit (это как void, только настоящий тип данных). unit в виде параметра обозначается как ().

Bogdan
07.01.2018
20:53:35
Угу , спасибо еще раз

Tony
07.01.2018
21:00:01
функцию можно задать и без скобочек, но тогда и в теле она у тебя должна возвращать другую функцию, а не значение (value). let func = fun x -> x * x let func x = x * x в обоих случаях результат примерно одинаков, только в первом случае func — это value, которое представляет из себя анонимную функцию, которая принимает одно значение и возводит его в квадрат, а во втором — это функция (не значение), которая делает то же самое. но разница между ними не особо значима (но это не точно).

Bogdan
07.01.2018
21:02:28
скрин с книги

Владислав
07.01.2018
21:02:55
Что за книга?)

Bogdan
07.01.2018
21:03:04
Сошников

Anna
07.01.2018
21:12:18
никто не мешает вот так написать
У этой штуки же будет тип unit, это не функция вообще. А recread - функция, ещё и рекурсивная

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