Size: a a a

2021 January 18

g

gsomix in F# Chat
В модуле тип и функции, навроде incrementAge.
источник

AT

Anton Ternavsky in F# Chat
gsomix
Один компонент — один модуль.
Ну блин, вот прикинь-компонентов 30+ штук, большинство из них как выше указаны, край несколько компонент. И это растаскивать по каждому модулю?
источник

AT

Anton Ternavsky in F# Chat
Ваял бы на шарпе, это было бы идиоматично
источник

AT

Anton Ternavsky in F# Chat
Таскать каждый тип в один файл
источник

AK

Aleksander Khanteev in F# Chat
Larymar r.sorokin
а подскажите пожалуйста
у меня есть 2 колонки чисел
1 2
1 2
2 5
...
мне нужно высянить сколько точек перехода есть в этих колонках
———————————————-
точка перехода, это когда раньше числа в 1 колонке были меньше чем во 2й, а после стало наоборот
пример
1 2
3 5
2 1 - точка перехода
3 2
3 8 - еще одна точка перехода
——————————————————————-
на с# я хранил состояние
bool stat  - который показывал какой столбец был больше в прошлую иттерацию
как правильно подойти к решению данной задачи на f#
а можно на чистой рекурсии попробовать, как-то так:
let input = [(1,2);(3,5);(2,1);(3,2);(3,8)]
let rec findBreakingPoints = function
   | (a1,a2)::(b1,b2)::tail ->
       let hit =
           if ((a1 > a2) && (b1 < b2)) || ((a1 < a2) && (b1 > b2)) then 1
           else 0
       hit + (findBreakingPoints <| (b1,b2)::tail)
   | _ -> 0
findBreakingPoints input |> Dump
источник

g

gsomix in F# Chat
Храни все в одном файле.
источник

Lr

Larymar r.sorokin in F# Chat
Aleksander Khanteev
а можно на чистой рекурсии попробовать, как-то так:
let input = [(1,2);(3,5);(2,1);(3,2);(3,8)]
let rec findBreakingPoints = function
   | (a1,a2)::(b1,b2)::tail ->
       let hit =
           if ((a1 > a2) && (b1 < b2)) || ((a1 < a2) && (b1 > b2)) then 1
           else 0
       hit + (findBreakingPoints <| (b1,b2)::tail)
   | _ -> 0
findBreakingPoints input |> Dump
Спасибо
источник

AT

Anton Ternavsky in F# Chat
S B
Зочем
Ну дык надо :)
источник

AT

Anton Ternavsky in F# Chat
gsomix
Храни все в одном файле.
Да ничем не лучше-модуль, состоящий из одного типа.
источник

AT

Anton Ternavsky in F# Chat
Т.е. каждый тип должен быть рассован в какой-то модуль, чтобы не воткнуться в такую проблему гарантированно.
источник

g

gsomix in F# Chat
Я предложил тебе все варианты.
источник

g

gsomix in F# Chat
Пойду спать. :)
источник

g

gsomix in F# Chat
Доброй ночи.
источник

AT

Anton Ternavsky in F# Chat
Ну либо атрибутом пользоваться  [<RequireQualifiedAccess>], либо имена контента типа разносить, что мне предпочтительнее выглядит
источник

AT

Anton Ternavsky in F# Chat
gsomix
Я предложил тебе все варианты.
Спасибо ! :)
источник

AT

Anton Ternavsky in F# Chat
Ну и спокойной ночи
источник

AT

Anton Ternavsky in F# Chat
Vladimir Shchur
да, тоже стараюсь) но это прямое следствие фичи перекрытия имен, так что это вполне идиоматичная проблема) а раз бай дизайн, то можно и не считать ее проблемой)
Как итог, какое решение то в итоге выбрал? :)
источник

VS

Vladimir Shchur in F# Chat
Anton Ternavsky
Как итог, какое решение то в итоге выбрал? :)
да сегодня некогда было думать, подобавлял явно название типа) с утра ещё подумаю и скорее всего переименую))
источник

AT

Anton Ternavsky in F# Chat
Vladimir Shchur
да сегодня некогда было думать, подобавлял явно название типа) с утра ещё подумаю и скорее всего переименую))
Имена полей в типе?
источник

АВ

Андрей Вилинский... in F# Chat
Anton Ternavsky
Ну либо атрибутом пользоваться  [<RequireQualifiedAccess>], либо имена контента типа разносить, что мне предпочтительнее выглядит
квалифаед ты можешь и без реквайр, имя типа перед пропертей поставь . А ещё у тебя везде Value во что-то завёрнуто, попробуй Measurement. А если не только для чисел, то можно ещё UMX прикрутить
источник