Size: a a a

2021 May 15

EB

Eyes in the Box in F# Chat
в плане стучать к хеду напрямую это вроде вещь небезопасная
источник

МП

Миша Проказин... in F# Chat
Так у меня первый sourceList - истинный list<obj>, по этому не проканает. На самом деле, я там вообще сериализую информацию о типе этого списка, в духе
type ValueType =
 | Unit
 | Integer
 | Float
 | String
 | Bool
 | List of valueType: ValueType
источник

МП

Миша Проказин... in F# Chat
Так что Head просто для примера.
источник

EB

Eyes in the Box in F# Chat
аа, понял
источник
2021 May 16

МП

Миша Проказин... in F# Chat
Так стоп, а у листа вообще есть публичный конструктор?
источник

K

Kir in F# Chat
[] и ::, разве нет?
источник

МП

Миша Проказин... in F# Chat
источник

EB

Eyes in the Box in F# Chat
так создавай его как лист, там жешь тогда вообще не впился активатор
источник

МП

Миша Проказин... in F# Chat
Щас не понял.
источник

EB

Eyes in the Box in F# Chat
создай IEnumerable дженериковый и сделай List.ofSeq
источник

EB

Eyes in the Box in F# Chat
не уверен что это прям самый топовый способ
источник

МП

Миша Проказин... in F# Chat
Интересно кстати
var lst1 = new FSharpList<int>(3, null);
var lst2 = new FSharpList<int>(2, lst1);
var lst3 = new FSharpList<int>(1, lst2);
Console.WriteLine(lst3);
// Выводит [1; 2]
источник

МП

Миша Проказин... in F# Chat
Хм, попробую.
источник

МП

Миша Проказин... in F# Chat
Мне бы хоть каким-нибудь костылём это подпереть сейчас.
источник

IC

Ilya L Che in F# Chat
Потому что lst1 создаёшь неправильным способом. Он у тебя в итоге пустой. Пихай вторым аргументом FSharpList<int>.Empty.
источник

IC

Ilya L Che in F# Chat
https://fsharp.github.io/fsharp-core-docs/reference/fsharp-collections-fsharplist-1.html
DU же.
type List<'T> =
       | ([])  : 'T list
       | (::)  : Head: 'T * Tail: 'T list -> 'T list
источник

МП

Миша Проказин... in F# Chat
Хм, может мне так и собрать себе лист?
источник

МП

Миша Проказин... in F# Chat
Я этим не могу пользоваться. У меня информация о типах только в рантайме появляется.
источник

IC

Ilya L Che in F# Chat
Вообще странно, что оно не кидается эксепшенами. Я бы кидал.
источник

МП

Миша Проказин... in F# Chat
Господь, храни рефлексию. У меня получилось

let mutableListType = typedefof<list<_>>
let mutableListType' = mutableListType.MakeGenericType(sourceList.Head.GetType())
let emptyProp = mutableListType'.GetProperty("Empty")
let consMethod = mutableListType'.GetMethod("Cons")
let mutable typedList = emptyProp.GetValue(null)
for item in sourceList do
   typedList <- consMethod.Invoke(null, [| item; typedList |])
           
typedList
источник