
Roman
04.04.2018
09:03:27
Куда же проще?

Vasily
04.04.2018
09:03:44
О, точняк
@Liminiens респект
А теперь вопрос, как это сделать не статик мембером :)

Google

Vasily
04.04.2018
09:07:11
Т.е. есть member x.Value
Где x как раз Value x
Точнее V

Roman
04.04.2018
09:11:50
Можешь описать что ты хочешь?

Vlad
04.04.2018
09:11:55
если статик то:
type V =
| V of int
static member private GetValue (V x) = x
member this.Value = V.GetValue(this)
[<EntryPoint>]
let main argv =
let v = V 100
printf "%i" v.Value
0 // return an integer exit code

Vasily
04.04.2018
09:12:34
Ишь ты
Ну так еще длиннее
Интересует вопрос, как правильно описать деконструкцию

Roman
04.04.2018
09:13:08
Можно статику приватным сделать

Vasily
04.04.2018
09:13:22
А точнее, можно ли из нее достать тип значения
member x.V = x???
Что надо написать вместо x???, чтобы взять значение

Google

Vasily
04.04.2018
09:14:34
Пока получается две строки
Первая - деконструкция, вторая собственно возвращение значения
Вопрос, можно ли результат деконструкции запайпить
И сразу его вернуть, например

Kirill
04.04.2018
09:15:27
можно же x |> V написать
или я неправильно понял задачу?

Vasily
04.04.2018
09:15:57
Хммм
Минуту

Roman
04.04.2018
09:16:03

Vlad
04.04.2018
09:16:04

Vasily
04.04.2018
09:16:33

Vlad
04.04.2018
09:17:08

Vasily
04.04.2018
09:17:15
В целом, можно не заморачиваться и тупо объявить модуль, конечно

Vlad
04.04.2018
09:19:06
я бы просто так написал и не парился:
type V = V of int
module V =
let getValue (V x) = x

Vasily
04.04.2018
09:19:23
Ну я ща так и написал
Старые ооп привычки дают о себе знать
Можно даже универсальный деконстракт написать по идее

Vlad
04.04.2018
09:20:24
ну так-то моя штука на 2х методах работает

Google

Vasily
04.04.2018
09:25:55
Угу
Короче, выглядит так, что с практической точки зрения удобно делать чистый тип, а все остальные операции в модуль

Evgeniy
04.04.2018
09:58:56
Храбрые ребята, которые запиливают фичи мимо RFC!
https://github.com/Microsoft/visualfsharp/pull/4673

Roman
04.04.2018
10:09:11

Vasily
04.04.2018
10:35:33
Какой @fvnever злой

Roman
04.04.2018
10:37:39

Friedrich
04.04.2018
10:38:20
?
Ему не понравилось, что я написал критику в комментариях к PR!

Vasily
04.04.2018
10:38:29
Да я комменты к пулл реквесту читаю :)
Человек старался, а его мордой об стол хрясь :)

Friedrich
04.04.2018
10:39:12
И ничо не хрясь, я просто предложил пересмотреть как минимум один аспект.

Vasily
04.04.2018
10:39:21
Хотя пропозал мегастранный

Friedrich
04.04.2018
10:39:26
Кстати, вы читали код? Я не понял, как это вообще работает.

Vasily
04.04.2018
10:39:34
Чувак из Явы,видать

Friedrich
04.04.2018
10:39:47
В частности, я там не вижу этого подчёркивания.
Там только скобки фигурные.
import xxx._
import yyy.{Zzz, Yyy}

Vasily
04.04.2018
10:40:34
Ну скальный,да
Там любят partial import

Friedrich
04.04.2018
10:41:05
(не помню только, можно ли совмещать _ и {} — вроде бы такого нет)

Google

Friedrich
04.04.2018
10:41:39

Vladimir
04.04.2018
10:46:51
логичнее было бы квадратные, это же массив неймспейсов

Klei
04.04.2018
10:57:14
Пробовал когда-то писать анализаторы и рефакторинги на Roslyn для C#. Куда смотреть чтобы сделать подобное на F# в большой VS?

Evgeniy
04.04.2018
10:58:55

??
04.04.2018
11:01:02
Вопрос, если метод назвать так, то либра C# его не видит. Почему не превращает в UpdateUid?
this.``update uid``() = ...

Friedrich
04.04.2018
11:01:31
Никто не обещал его преобразовывать.

Roman
04.04.2018
11:01:45

??
04.04.2018
11:02:06

Roman
04.04.2018
11:02:25
это же F# онли

??
04.04.2018
11:03:00

Friedrich
04.04.2018
11:03:23

??
04.04.2018
11:05:03

Roman
04.04.2018
11:06:07

Klei
04.04.2018
11:06:34

Friedrich
04.04.2018
11:08:02

Evgeniy
04.04.2018
11:10:53
Я недавно думал над утилиткой, которая работает с дырками как в Haskell.
Интересно, насколько сложно ее будет реализовать с помощью FCS.

Google

Roman
04.04.2018
11:14:09

Evgeniy
04.04.2018
11:14:18
с чем?
https://wiki.haskell.org/GHC/Typed_holes
Я бы не сказал, правда, что это будет сильно полезная фича.

Vasily
04.04.2018
11:22:55
Кстати
Модули могут быть типизированными?

Roman
04.04.2018
11:23:21

Vasily
04.04.2018
11:23:25
Вопрос снимается
Скорее всего там типизированы методы во всяких List

Vlad
04.04.2018
11:24:11

Vasily
04.04.2018
11:24:48
Ну я ща не туда подался, походу

??
04.04.2018
11:24:52

Friedrich
04.04.2018
11:27:50

Roman
04.04.2018
11:28:17
круто

??
04.04.2018
12:14:51
Есть несколько объектов (до ≈20), которые нужно периодически сортировать после добавления новых/удаления старых. Что лучше использовать, спискок, массив, что-то ещё?

Klei
04.04.2018
12:16:07
Сортировка таже? Или меняется?

??
04.04.2018
12:17:33
Сортировка таже? Или меняется?
В смысле? Внутри DU, которые сортируются по типу сначала, и по содержанию между собой. Пока что лежат списком, но вот возникает трабл с синтаксимом удаления элементов.
static member ``sort by type`` obj =
match obj with
| A (record) -> 0b000001 <<< 26 ||| record.uid >>> 5
| B (record) -> 0b000010 <<< 26 ||| record.uid >>> 5
| C (record) -> 0b000100 <<< 26 ||| record.uid >>> 5
| D (record) -> 0b001000 <<< 26 ||| record.uid >>> 5
| E (record) -> 0b010000 <<< 26 ||| record.uid >>> 5

Klei
04.04.2018
12:21:08
Тебе по списку часто бегать надо? Если да, то юзай SortedList какой-нибудь.
Если нужна иммутабельность, то возможно зиппер подойдет.

??
04.04.2018
12:23:36

Vasily
04.04.2018
12:23:58
Тогда вопрос
ПОчему надо держать отсортированный список
Если он только для вьюхи