Romɑn
Romɑn
хотя пару фич виндовых я бы забрал в макось
Vladislav
ааа
старый вроде один парень писал
x
Romɑn
Фил Ранжин
не всегда
Фил Ранжин
в последней ts будет
Romɑn
Romɑn
дислайк
Фил Ранжин
вскод херово подсвечивает F#
Фил Ранжин
кстати, вот всё хотел спросить
Фил Ранжин
там новое расширение для F# завезли
Фил Ранжин
как оно?
Фил Ранжин
которое через lang services
Bonart
x
x
PM пусть делает что хочет )
Ayrat
как оно?
очень быстрое. Прям очень. Пока сырое
Roman
Хабр лежит походу
Vasily
Хммм... есть ощущение, что на работе таки внедрим Paket
Vasily
И это хорошо
Pavel
@omgszer а твои неперсистентные стримы гденить нарыть можно?
Ayrat
ща скину
Ayrat
@deexpp добавляешь нугет сорс http://nuget.arkadium.com/nuget/
там нугет Inhabit.ETL.Common
в нём AltStream живут в неймспейсе гопака, т.е. надо сделать
open Hopac
и можно жахать
[1..10]
|> AltStream.ofSeq
|> AltStream.mapFun (fun x -> x*2)
|> AltStream.consumeFun (printfn "%d")
Ayrat
сделать его персистентным можно через
AltStream.memoize на любом этапе
Pavel
спасиб
Ayrat
Так, я наверное тупой. Почему это не компилируется?
Ayrat
тип такой дефинишн имеет
type A =
struct
new : a:int -> A
val mutable private a: int
member A : int
member A : int with set
end
Ayrat
Ошибка такая
error FS0256: A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'
Ayrat
Ayrat
страница 146
Ayrat
@vshapenko I summon you
Ayrat
и ещё, вот цитата с MSDN
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/members/properties#remarks
`Properties can be members of classes, structures, discriminated unions, records, interfaces, and type extensions and can also be defined in object expressions.`
Ayrat
Я ссыкую ишью заводить, походу БАЙ ДЕЗАЙН, но я пока не понял в чём тут дизайн меня ебёт
Vasily
Стракт
Ayrat
Стракт
Не, я понимаю что он иммутабельный
Ayrat
Внимание вопрос - чо в спеке-то написано?
Ayrat
какие-то мутабельные поля в стракте
Ayrat
и оно даже компилится
Ayrat
в смысле само объявление типа с мутабельными полями в стракте
Vasily
Ну ща почитаем
Ayrat
Я кстати скомплил как в спеке написано
Ayrat
@vshapenko ^
Vasily
By design
Ayrat
Я тебе ещё круче покажу ща, охуеешь
Ayrat
Vasily
The fields in a struct may be mutable only if the struct does not have a primary constructor. For
example:
Vasily
НННА
Ayrat
что ННА? у меня нет праймари конструктора
Ayrat
иначе он бы мне мозги выебал и не скомпилился
Ayrat
ты выше посмотри
Vasily
[<Struct>]
type MutableComplex =
val mutable real : float;
val mutable imaginary : float
member x.R = x.real
member x.I = x.imaginary
member x.Change(r, i) = x.real <- r; x.imaginary <- i
new (r, i) = { real = r; imaginary = i }
Ayrat
все эти "мутабельные" поля нихуя немутабельные.
Спека вводит в заблуждение
Vasily
В спеке так
Ayrat
ну один хер, там происходит создание нового объекта в x.Change(r,i)
Vasily
Нет
Ayrat
Да
Vasily
Да где?
Ayrat
хинт ушами. Это комилится
member x.Change(r, i) = x.real <- r; x.imaginary <- i
Это нет:
member x.Change(r, i) = real <- r; imaginary <- i
Vasily
Логично
Ayrat
т.е. из "инстансного" метода нельзя обращаться к "инстасным" полям
Ayrat
x это уже новый объект
Vasily
Это не "инстансное " поле
Ayrat
member x.Change намекает что мы вызываем это у инстанса x
Vasily
В данном случае это скорее локальная переменная в конструкторе
Ayrat
да, это просто охуенно завуалированный конструктор
Ayrat
что-то типа { a with A = 1 }
Ayrat
которое одно поле меняет у исходной структуры и создаёт новый объект
Vasily
Возможно
Vasily
Но вернуть ты его не можешь
Vasily
Судя по всему
Ayrat
могу
Ayrat
Ayrat
вот, вернул же
Ayrat
и это другой объект
Vasily
Становится интересно, да