@Fsharp_chat

Страница 224 из 772
Igor
04.07.2017
11:08:28
Можно пример? Вот такой код работает, но мне даже VSCode подсвечивает warning, что можно проще написать bus.RespondAsync<Command, Responses>(fun x -> handle x) |> ignore А когда использую “авто-исправление”, он меняет на код с ошибкой ?

Igor
04.07.2017
11:19:11
Что-то не короче “fun x -> handle x” выходит, но спасибо за пример

Летучая
04.07.2017
11:19:51
лучше обёрточку сделать

Google
Летучая
04.07.2017
11:19:55
|> asFunc

изолировать страшномордие!

Friedrich
04.07.2017
11:20:49
Хозяйке на заметку: new Func<Something> чаще всего можно заменять на Func<_> (опустив new и аргументы генерика).

Igor
04.07.2017
11:23:05
|> asFunc
ОК, если это больше одного раза встретится у меня в коде, то наверное вынесу

Pawel
04.07.2017
11:23:32


Можно ли ionide заставить не показывать тип выражения? Меня это бесит. умники блин...

Igor
04.07.2017
11:24:16
”editor.codeLens": false,

Pawel
04.07.2017
11:25:21
Pawel
04.07.2017
11:26:28
firacode. Оч рекомендую

Igor
04.07.2017
11:27:34
У меня тоже, только почему-то буквы пожирнее (может из-за того что мак без ретины)

Vasily
04.07.2017
11:41:07
Вопрос знатокам алгоритмов

Есть список диапазонов, надо сгруппировать по пересекающимся

Google
Vasily
04.07.2017
11:42:01
Однострочником пока не получается что-то

Крутятся мысли про фолд...

Летучая
04.07.2017
11:44:52
Vasily
04.07.2017
11:46:23
("1","5"),("2","4")-> [[("1","5"),("2","4")]]

Типа такого

По факту, нужен список массивов непересекающихся множеств

Pawel
04.07.2017
12:00:02
Vasily
04.07.2017
12:04:05
https://github.com/fpawel/dak/blob/master/App/Utils/IntRanges.fs
Гляну, но на первый взгляд не совсем то

Мне нужно то, что называется disjoint set

Как мне кажется

Я в целом знаю, как это написать в императивном стиле

Sergey
04.07.2017
12:59:12
у Седжвика в курсе была такая задачка

nlogn сложность

там речь шла о поиск и сортировка дорожек на печатной плате

Pawel
04.07.2017
13:11:46
http://www.progletariat.com/blog/2017/06-22-fable-threejs-hello/index.html
let ambientLight = Three.AmbientLight(U2.Case2 "#3C3C3C", 1.0) let spotLight = Three.SpotLight(U2.Case2 "#FFFFFF") ну ахренететь..

Klei
04.07.2017
13:13:04
Есть список диапазонов, надо сгруппировать по пересекающимся
Вроде так: let group items = let folder (border, currentGroup, acc) (left, right) = if left <= border then (max right border, (left, right)::currentGroup, acc) else (right, [left, right], currentGroup::acc) match items |> Seq.sort |> List.ofSeq with | (left, border)::items -> (items, (border, [left, border], [])) |> Some | _ -> None |> Option.map (fun (items, state) -> List.fold folder state items |||> fun _ current acc -> current :: acc) |> Option.defaultValue []

Vasily
04.07.2017
13:17:50
Ну я примерно так и написал, только работает медленно, зараза такая

Там квадратичная сложность практически

Pawel
04.07.2017
13:35:41
http://www.progletariat.com/blog/2017/06-22-fable-threejs-hello/index.html
@gsomix если хочешь в webgl без боли, рекомендую http://package.elm-lang.org/packages/johnpmayer/elm-webgl/latest/WebGL Там и библиотека более высокоуровневая с чистым и удобным API, и компилятор умеет распарсить текст шейдеров на GLSL и проверить согласованность используемых типов между шейдерами и основной программой.

Nikolay
04.07.2017
13:38:54
let camera = Three.PerspectiveCamera(75.0, width() / height(), 0.01, 1000.0) camera.matrixAutoUpdate <- true ... фи

Google
Nikolay
04.07.2017
19:05:46
Funogram 30 Downloads

Кто все эти люди?

Летучая
04.07.2017
19:06:04
nuget restore packages твои мб

а вообще аналогов же нет

так что будут расти

Nikolay
04.07.2017
19:06:32
Ну я свою либу сам то не ставил

Evgeniy
04.07.2017
19:06:43
Еще всякие роботы. :)

Nikolay
04.07.2017
20:04:39
let (>=>) a b = a (fun _ -> b) let cmd (command: string) (h: _ -> unit) = printfn "Cmd: %s" command [<EntryPoint>] let main argv = let c = cmd "test" >=> printfn "a" 0 Как сделать, чтобы printfn "a" не выполнялось при инициализации?

Если завернуть в fun, то всё ок

Artemy
04.07.2017
20:08:28
let c () = ... printfn "a"?

Или же let c = lazy (...printfn "a")

Nikolay
04.07.2017
20:27:53
let c () = ... printfn "a"?
Ну мне то не функция нужна, а значение

Т.е. такой вариант норм работает: cmd "test" (fun _ -> printfn "a") Но хочется через оператор: cmd "test" >=> printfn "a"

Artemy
04.07.2017
20:30:22
Ну можно 2-м аргументом оператора сделать функцию unit -> unit

Или же Lazy<unit>

Или же ещё можно так извратиться: cmd "test" >=> ( (fun _ -> printfn "a") () )

Aleksander
04.07.2017
20:31:39
https://stackoverflow.com/a/34235253 - пишут что никак. либо замыкания, либо lazy, либо игры с let! или quotations

Artemy
04.07.2017
20:32:50
Да, короткого варианта не будет. Это не Хаскелл.

Google
Artemy
04.07.2017
20:34:56
М.б. вариант с Lazy покрасивее будет, чем через функцию (unit -> unit).

Igor
04.07.2017
20:55:13
Или же let c = lazy (...printfn "a")
Я правильно понял что lazy в сам язык внесено?

Artemy
04.07.2017
20:55:55
Это ключевое слово, которое работает как функция-конструктор Lazy<_>.

Вроде так

Igor
04.07.2017
20:56:11
Блин, не гибко как-то (свой lazy не напишешь)

Artemy
04.07.2017
20:56:37
Мне ещё интересно, почему есть ключевое слово lazy, но ключевого слова force нету

Igor
04.07.2017
20:58:28
Я думал понятно написал ? Лишние ключевые слова засоряют язык (expression problem), а тут еще всякие начинают требовать еще force ?

Artemy
04.07.2017
20:58:54
А .вот о чём речь

Ну я скорее к тому, что либо надо оба lazy и force ключевыми словами сделать, либо оставить и то и другое в виде функций.

Но это мне так кажется на первый взгляд. Возможно, я не прав.

Aleksander
04.07.2017
21:10:38
ну и можно сделать такую сомнительно полезности штуку: let (!>) a b = (fun b -> a b) let cmd (command: string) (h: _ -> unit) = printfn "Cmd: %s" command [<EntryPoint>] let main argv = let c = cmd "test" (!> printfn "a") 0

Pawel
05.07.2017
04:34:16
Блин, не гибко как-то (свой lazy не напишешь)
а свой lazy - это что например?

Evgeniy
05.07.2017
04:57:47
Ух! https://github.com/Microsoft/visualfsharp/issues/3303

Friedrich
05.07.2017
05:48:36
А Rider поддерживает F# на .NET Core чтоли? Проекты начали открываться.

Правда, подсвечивает несуществующие ошибки :(

Но запускалка тестов работает, например.

Evgeniy
05.07.2017
06:28:12
> Best advice for folks learning #fsharp: > Don't try to write Haskell/C#/Ruby/Python/etc. You'll have a better time if you don't "bring idioms"

Pawel
05.07.2017
10:25:02
Google
Evgeniy
05.07.2017
10:32:01
универсальный совет) опустоши свой разум, падаван))
Самое интересное, что непонятно, как правильно писать на F#.

Pawel
05.07.2017
10:37:51
Иногда тоже задаюсь этим вопросом) Но >=> - вне всякого сомнения тяжкий грех

Evgeniy
05.07.2017
15:25:05
Вакансия мечты. *__* https://jobs.lever.co/tachyus/aa682cc3-94f6-428c-9b29-2e3fcb96e0bd

Anton
05.07.2017
16:20:15
и ещё https://jobs.lever.co/tachyus/400f268f-8144-4543-8a79-669dff06fb4e

Evgeniy
05.07.2017
17:04:09
и ещё https://jobs.lever.co/tachyus/400f268f-8144-4543-8a79-669dff06fb4e
Там была фишка в том, что scientific.

Anton
05.07.2017
17:06:12
а =)

ну там в описании тоже =)

Igor
05.07.2017
19:01:40
Я теперь понял откуда еще Антон набрал материала для своего легендарного баллонхил. Вот парочка свежих (но старых) видео с NDC от Scott Wlaschin https://youtu.be/KPa8Yw_Navk - имхо это надо показывать все C# программистам, что бы заинтересовать их F# https://youtu.be/Up7LcbGZFuo - ну и классика про DDD

Igor
05.07.2017
19:35:34
марк в одном из видео говорил "pushing ball on hill" или что-то вроде, мб оттуда? (Антона я не смотрел)
Вот это видео: https://youtu.be/Bn132AtZLhc По моему наблюдению это агрегация и перевод доклада “DDD” Scott Wlaschin (выше) и докладов Марка - https://youtu.be/US8QG9I1XW0 - https://youtu.be/cxs7oLGrxQ4

Pawel
05.07.2017
19:46:56
Vlad
05.07.2017
19:56:26
посмотрел его доклад, интересно, надо набраться сил и осилить его сайт)

Igor
05.07.2017
19:58:18
Да его и Марка всегда приятно послушать.

Слушайте а pipe |> оператор считается поинтфри стилем?

Artemy
05.07.2017
20:33:46
Слушайте а pipe |> оператор считается поинтфри стилем?
Думаю, нет. Аргумент-то явно указывается.

Igor
05.07.2017
20:35:31
Artemy
05.07.2017
20:36:03
Типа x |> f |> g |> h?

Igor
05.07.2017
20:38:29
Ага

Artemy
05.07.2017
20:41:21
Как бы то ни было, мы же задаём аргумент всё-таки.

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