
Andrew
06.02.2018
10:48:14
Ага

Anna
06.02.2018
10:48:59
ааааа ? Спасибо! Ещё пара итераций и я прошарюсь, честно ?
Попробую себя в роли редактора теперь ?

Evgeniy
06.02.2018
10:53:52

Google

Pavel
06.02.2018
11:02:44
я что-то не понимаю или странности:
ошибка The types ''a' and 'seq<'a>' cannot be unified, вроде бы, понятная, но какого фига она тут — ен совсем понятно
let splitBy predicates seq =
let rec loop res curr predIdx s =
if predIdx = (List.length predicates) then
Seq.append res curr
else
match s |> Seq.tryHead with
| None -> Seq.append res curr
| Some head when not (predicates.[predIdx] head) ->
let res = Seq.append res [curr]
let x = Seq.singleton head
s |> Seq.tail |> loop res x (predIdx + 1)
| Some x -> //^------ The types ''a' and 'seq<'a>' cannot be unified
let c = Seq.append curr [x]
s |> Seq.tail |> loop res c predIdx
loop Seq.empty Seq.empty 0 seq
тип x — seq<'a>, что полностью соответствует сигнатуре loop, да и в следующем кейсе на ровно этом же месте стоит c, тип которой точно так же seq<'a>
возможно, на пэйстбине будет проще смотреть: https://pastebin.com/iuAP6ydg
уменьшить, чтобы ошибка осталась, к сожалению, у меня не вышло =(


Roman
06.02.2018
11:08:49
Привет!

Ruslan
06.02.2018
11:09:11
привет

Evgeniy
06.02.2018
11:12:14

Pavel
06.02.2018
11:12:25
seq<'a>
res — seq<seq<'a>>
[curr] — seq<'a> list
просто для аппенда нужны два seq

Evgeniy
06.02.2018
11:13:44
Что-то не сходится.
Seq.append res curr

Google

Evgeniy
06.02.2018
11:13:55
Например.
Видимо, нужно везде [curr].

Pavel
06.02.2018
11:15:05
ну тут получается, что res — seq<seq<'a>>, а curr — seq<'a>, но [curr] — seq<'a> list, что приводится к seq<seq<'a>>

Evgeniy
06.02.2018
11:15:34

Pavel
06.02.2018
11:16:01
да, на четвёртой строчке ошибка была (которую никто не подсвечивал о,О)
лол, ты прав, спасибо огромное! :)
две такие ошибки были, проглядел %)

Evgeniy
06.02.2018
11:22:39

Pavel
06.02.2018
11:23:11
немного странно, потому что intellisense всё правильно показывал

Evgeniy
06.02.2018
11:23:26
?
А вот это странно, да.
@shishkinpavel Можно завести ишшуй, я думаю.

Pavel
06.02.2018
11:36:54
оок, в течении нескольких дней сделаю маленький примерчик
кстати, этот код ужасен: он много раз вычисляет входную последовательность по частям
нет ли какого-то аналога lazy-seq из clojure?
т.е. последовательность, которая будет вычисляться лениво и, кроме того, кешировать уже вычисленные элементы

Roman
06.02.2018
11:39:51

Pavel
06.02.2018
11:40:52
интересно, спасибо!

Roman
06.02.2018
11:41:13

Pavel
06.02.2018
11:41:37
я быстренько проверил в репле, вроде бы, нет

Google

Pavel
06.02.2018
11:42:43
let a = seq { for i in 10 .. -1 .. 0 do printf "%A" i; yield i };;
let b = a |> Seq.cache;;
b |> Seq.head;; //prints "10"
b |> Seq.head;; //no "10"

A64m
06.02.2018
11:43:46

Roman
06.02.2018
11:44:11

Vlad
06.02.2018
13:01:52
Хотел написать вопрос, пока писал нашел решение

Dmitry
06.02.2018
13:03:04

Vlad
06.02.2018
13:03:45

Friedrich
06.02.2018
13:11:55

Evgeniy
06.02.2018
13:12:15

Friedrich
06.02.2018
13:13:08
Как справились?
Ну, бинарники из нугета скачиваются, а сам пакет с помощью msbuild-магии привязывался к шагу dotnet restore.
Я точно помню, что что-то такое было

Evgeniy
06.02.2018
13:13:39
По поводу первого — не помню такого.

Friedrich
06.02.2018
13:13:53
А бинарники так и надо в гит заливать? Блин, да что ж такое.
Надо это починить! Доколе!

Evgeniy
06.02.2018
13:14:48

Igor
06.02.2018
13:14:59

Friedrich
06.02.2018
13:15:09
Я не должен доверять артефактам, которые автор залил в репу
Я должен доверять только тому, что я могу на глаз проверифицировать, или что скачивается с серверов, которым я доверяю.

Google

Friedrich
06.02.2018
13:16:07
А то мало ли чего он там под видом paket.exe назаливает
Кулибиным запросто может прийти в голову светлая мысль скрафтить себе кастомный paket.exe с телеметрией или чёрт знает чем.
Ну то есть вы не подумайте, я не против пакета, а даже наоборот. Но с наколеночной дистрибьюцией надо что-то решать.

Evgeniy
06.02.2018
13:18:22
@fvnever Можно нугетом скачать что-нибудь и просто положить в нужную папку?

Friedrich
06.02.2018
13:18:40

Evgeniy
06.02.2018
13:18:56
А через dotnet?

Friedrich
06.02.2018
13:18:58
Вопрос в том, можно ли дотнетом :)
Тут надо думать. Я полагаю, что можно будет извратиться через msbuild. Подписаться на тот же самый шаг restore, да и написать свой кастомный инлайн-таск или что-то в этом роде.

Evgeniy
06.02.2018
13:20:45

Friedrich
06.02.2018
13:21:26

Vlad
06.02.2018
13:23:06
Это вы про pseq?

Evgeniy
06.02.2018
13:24:15

Artem
06.02.2018
13:34:05
а есть какой нибудь аналог IEnumerable<T>.Join? в std f#?

Igor
06.02.2018
13:38:30

Artem
06.02.2018
13:39:09
да походу проще подтащить LINQ
точнее мне нужно ('a option[] * 'b option[]) -> ('a option * 'b option)[] наверно просто функцию написать

Igor
06.02.2018
14:22:03
А есть разница, если в коде ниже заменить return! на do!
let rec loop () =
async {
let! cmd = inbox.Receive ()
do! ..
return! loop ()
}
Оно скомпилируется, но боюсь что останется ссылка на переход и это может вызывать memory-leak

Sergey
06.02.2018
15:11:00
https://twitter.com/tamizhvendan/status/960888482406154242

Vladimir
06.02.2018
15:14:33
оо, то что надо)

Google

Vladimir
06.02.2018
15:15:40
от меня первая звездочка на гитхабе)

Vlad
06.02.2018
15:36:36
а как Seq.cache работает? это как лист приведенный к ienumerable и обратно?

Pavel
06.02.2018
17:27:57
и ещё вопрос про последовательности: Seq.append и Seq.concat зачем-то в момент вызова вычисляют все последовательности, переданные им, можно ли этого избежать? (для настоящего ленивого вычисления)

Tony
06.02.2018
17:48:28

Sergey
06.02.2018
17:54:35

Klei
06.02.2018
19:03:43

Vlad
06.02.2018
19:17:22

Pavel
07.02.2018
03:56:50

Roman
07.02.2018
08:50:45
Афигеть!
A new experiment: Browser-based web apps with .NET and Blazor | .NET Web Development and Tools Blog
https://blogs.msdn.microsoft.com/webdev/2018/02/06/blazor-experimental-project/
https://twitter.com/k_cieslak/status/960859530434367488

Siarhei
07.02.2018
09:02:22

Artemy
07.02.2018
09:18:14

Andrew
07.02.2018
09:23:33
Видимо, не выдержали когда придумывали название)

Kirill
07.02.2018
09:24:57
а код-то где?
если показать код, то может оказаться всё не таким смешным

Roman
07.02.2018
09:28:51

Sergey
07.02.2018
09:31:06
Лысый из Brazor

Vlad
07.02.2018
09:32:46

Evgeniy
07.02.2018
09:33:57
FSharp + Babel = Fable
Ну такое. :)