LINUX.ORG.RU

[F#] проблемы с типами


0

2

Заранее извиняюсь что задаю вопрос в неподходящем месте(я пошёл на форумы мсдна, но там убогость во всём и решил задать там, где уютнее)

В C# есть у меня такая вещь:

 public struct vertexPath<TVertex, TLp>
        {
            public readonly TVertex VertexFrom;
            public readonly TVertex Vertex;
            public ICollection<Pair<TLp, TLp>> FromToSets;
...
}
В F# такой код:
let getOnlyVs_f (vpaths : seq<UGSearchingExtensions.vertexPath<Element, string>>) =
    Seq.map(fun vpath -> vpath.Vertex) vpaths

Ошибка на vpath.Vertex - Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved.

Вопрос - что значит ему не понятно в типе Element?

> задаю вопрос в неподходящем месте

4.2

anonymous
()

Попробуй так:

let getOnlyVs_f (vpaths : seq<UGSearchingExtensions.vertexPath<Element, string>>) =
    vpaths |> Seq.map(fun vpath -> vpath.Vertex)
dave ★★★★★
()

Вопрос - что значит ему не понятно в типе Element?

Он не может правильно вывести типы в лямюде: fun vpath -> vpath.Vertex

Так компилируется:

namespace Lib1
{
  public struct vertexPath<TVertex, TLp>
  {
    public readonly TVertex VertexFrom;
    public readonly TVertex Vertex;

    public ICollection<Tuple<TLp, TLp>> FromToSets;

  }
}
open Lib1

type VP = Lib1.vertexPath<int, string>

let getOnlyVs_f (vpaths : VP seq) =
    Seq.map(fun (vpath: VP) ->  vpath.Vertex) vpaths

п.с. я ещё на codenet могу отвечать по F#

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

сейчас проверить не могу,но вроде так тоже не получилось, завтра посмотрю, спасибо)

*4.2

я же извинился, но ведь F# скоро в моно будет и потенциально этот код будет работать и под линукс, так вот)

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

Так я про то же. Код открыт, значит место подходящее.

anonymous
()
Ответ на: комментарий от Norgat

Да, так работает, только есть вопрос - (vpaths : VP seq), каким правилом вы пользовались для задания типа?

pseudo-cat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.