Как я могу изменить свою очередь класс, чтобы разрешить пользователям создавать пустые очереди неопределенного типа в F # ?

я создал неизменный Queue F# следующим образом:

type Queue<'a>(f : 'a list, r : 'a list) =    
    let check = function
        | [], r -> Queue(List.rev r, [])
        | f, r -> Queue(f, r)

    member this.hd =
        match f with
        | [] -> failwith "empty"
        | hd :: tl -> hd

    member this.tl =
        match f, r with
        | [], _ -> failwith "empty"
        | hd::f, r -> check(f, r)

    member this.add(x) = check(f, x::r)

    static member empty : Queue<'a> = Queue([], [])

я хочу создать экземпляр пустой Queue, однако я получаю значение-ограничение исключение:

> let test = Queue.empty;;

  let test = Queue.empty;;
  ----^^^^

C:\Documents and Settings\Джульетта\Local Settings\Temp\stdin(5,5): ошибка FS0030:Ограничение значений. Значение 'test' был выведен иметь универсального типаВаль тест : Очереди

Найдено 1 ответ:

How should I modify my Queue class to allow users to create empty queues of unspecified type in F#?

http://stackoverflow.com/questions/927400/how-should-i-modify-my-queue-class-to-allow-users-to-create-empty-queues-of-unsp

Посмотреть решение →