@Fsharp_chat

Страница 161 из 772
Nikolay
24.05.2017
17:00:48
Roman
24.05.2017
17:01:28
А в release не пробовал?)
Нет. ) Не стал рисковать

Pavel
24.05.2017
17:05:16
Хвостовая рекурсия - одна из причин отсутствия поддержки f# в. Net native

Nikolay
24.05.2017
17:05:27
https://stackoverflow.com/a/29571052

Google
Nikolay
24.05.2017
17:05:31
Вот

Короче, C# может в хвостовую рекурсию, если сильно захочет

Pavel
24.05.2017
17:06:34
На сколько я помню Roslyn с этим справляется

alix
24.05.2017
17:07:13
насколько я помню она оптимайзится в цикл

Roman
24.05.2017
17:07:26
насколько я помню она оптимайзится в цикл
в этом смысл ховостовой рекурсии)

Nikolay
24.05.2017
17:07:57
но зачем
Чтобы хейтить джаву

alix
24.05.2017
17:08:22
в этом смысл ховостовой рекурсии)
ну так напиши сразу цикл

проблемесы?

Roman
24.05.2017
17:08:39
но зачем
Локаничность, есть действительно некоторые вещи, которые сразу представляются в виде цикла, а есть задачи, решение которых именно рекурсивно

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

Nikolay
24.05.2017
17:09:45
Обход дерева рекурсией выглядит лаконично

Google
Roman
24.05.2017
17:10:50
Вот с одной стороны звучит как хороший лозунг, но вот контекст...

Nikolay
24.05.2017
17:12:18
А почему они не сделают нормальную хвостовую рекурсию, раз CLR её уже поддерживает?

Alexey
24.05.2017
17:13:27


alix
24.05.2017
17:13:40
Обход дерева рекурсией выглядит лаконично
мне кажется это будет уже не хвостовая рекусрия

Roman
24.05.2017
17:18:26
alix
24.05.2017
17:18:40
Обойти можно и хвостовой
код можешь написать?

обход в ширину или в глубину?

Roman
24.05.2017
17:26:45
код можешь написать?
кончено могу, если тебе не надо ничего возвращать, а найти и применить с сайдэффектом, то можно хвостовой рекурсией

alix
24.05.2017
17:29:03
то есть учитывая что нужно внутри функции сделать n вызовов в зависимости от числа листьев? все равно будет хвостовая рекурсия?

я б посмотрел как это без стека работает

Alexey
24.05.2017
17:36:06
Модераторы быстрого реагирования

Klei
24.05.2017
18:14:34
то есть учитывая что нужно внутри функции сделать n вызовов в зависимости от числа листьев? все равно будет хвостовая рекурсия?
Ну как минимум в случае бинарного дерева используются продолжения. Примеры есть в курсах Сошникова.

Roman
24.05.2017
18:15:11
я б посмотрел как это без стека работает
не без стека, но переполнения не будет.

type Tree = | Leaf of int | Node of Tree * Tree let rec code (f: int -> unit) (tree:Tree) = match tree with | Leaf x -> f x | Node(t1,t2) -> code f t1 code f t2 let makeTree n = let rec createTree i tree = if i = n then tree else Node(Leaf(i), tree) |> createTree (i + 1) Leaf(10000001) |> createTree 0 [<EntryPoint>] let main argv = let t = makeTree 1000000 code (printfn "%i") t System.Console.ReadKey() |> ignore 0



Roman
24.05.2017
18:19:53
элемент дерева точнее
просто таоке дерево, можно и дерево со значениями в узлах сделать

Google
Nikolay
24.05.2017
18:20:19
Круто :)

alix
24.05.2017
18:20:25
ну а если будет просто node?

Roman
24.05.2017
18:20:49
Nikolay
24.05.2017
18:20:51
@neftedollar а если пометить как [<Struct>]

Roman
24.05.2017
18:23:54
alix
24.05.2017
18:23:59
и в узлах значения

Nikolay
24.05.2017
18:24:14
Как написать функционально такой кусок: let a = JsonConvert.DeserializeObject<Types.ApiResponse<'a>>(str, jsonOpts) if a.Ok then a.Result else failwith("Error")

Roman
24.05.2017
18:24:17
когда tree не атд
тогда болше памяти уйдет. Это же никак не влияет на стек

@neftedollar а если пометить как [<Struct>]
тогджа по ходу не влезет дерево стек.

Nikolay
24.05.2017
18:26:15
если ошибки там это нормально
А вот это уже второй вопрос)

Нормально использовать failwith при ошибке?

Roman
24.05.2017
18:28:03
Нормально использовать failwith при ошибке?
я бы использовал Option или Result

Nikolay
24.05.2017
18:29:07
я бы использовал Option или Result
С Option печально, что ты не получишь информации об ошибке

Google
Roman
24.05.2017
18:29:31
alix
24.05.2017
18:30:50
блин я все равно не понимаю как если бы узлы были однородные и со значениями внутри выполнить поиск в глубину например хвостовой рекурсией)

Admin
ERROR: S client not available

Nikolay
24.05.2017
18:30:55
Result интересно выглядит

alix
24.05.2017
18:31:04
там по любому нужен стек будет

Roman
24.05.2017
18:33:07
блин я все равно не понимаю как если бы узлы были однородные и со значениями внутри выполнить поиск в глубину например хвостовой рекурсией)
Наверное, да. Но опять же если надо найти и например напечатать, т.е. Не хранить состояние, то можно и хвостовой

Evgeniy
24.05.2017
18:33:29
Ну как минимум в случае бинарного дерева используются продолжения. Примеры есть в курсах Сошникова.

Nikolay
24.05.2017
18:40:04
Нашёл такой пример на msdn: let private tryParseWith tryParseFunc (s : string) = match (tryParseFunc s) with | true, x -> Ok x | false, _ -> Error ("%s is not capable of being parsed." s) Но ругается на строку Error ...: This value is not a function and cannot be applied

Nikolay
24.05.2017
18:44:43
Я думал это фитча Error :)

Evgeniy
24.05.2017
19:06:31
@irrationality https://gist.github.com/gsomix/520a7c3d5a74c0cf0a5e14442a123531

Nikolay
24.05.2017
19:48:35
https://gist.github.com/Dolfik1/81e376988747fe915d095d2962e0c131

Не пойму в чём косяк

IdiomaticDuConverter не умеет вложенности конвертить?

Ошибка на 91 строке: System.InvalidCastException occurred HResult=0x80004002 Message=Недопустимое приведение "System.Int64" к "Program+Types+User". Source=mscorlib StackTrace: at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider) at System.Int64.System.IConvertible.ToType(Type type, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) at System.Convert.ChangeType(Object value, Type conversionType)

Roman
24.05.2017
22:44:56
Может нам как сообществу принести пользу и собрать в одном месте биндинги fable?

Evgeniy
25.05.2017
04:51:27
Что у тебя работает неправильно?

Угу, через Ж всё работает

Nikolay
25.05.2017
06:28:08
Google
Evgeniy
25.05.2017
06:28:24
Да.

Nikolay
25.05.2017
06:30:19
У меня вчера автодополнение чудило

И просвечивало ошибки, которых не было

И меня это выбесило :)

В VS15 такой херни не было

Max
25.05.2017
06:34:49
В VS15 такой херни не было
Так это известный баг... Меняешь тип редактора в vs на любой другой и обратно. Решается за секунду

Evgeniy
25.05.2017
06:35:51
@Dolfik VF# Nightly?

Ишшью завел?

Nikolay
25.05.2017
06:38:03
Вроде ничего не стоит

Я хз как воспроизвести, просто перезапустил студию, стало ок

Evgeniy
25.05.2017
06:39:56
Кажется, проблема не катастрофическая.

Nikolay
25.05.2017
06:40:33
Но всё равно печально

И ещё печально, что powertools нет

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