Próbuję uzyskać ten przykład z Suave.io kompilacji prostego F # projektu: http://suave.io/Próbka Suave.IO nie kompiluje w moim projekcie F #
open Suave.Http.Applicatives
open Suave.Http.Successful
open Suave.Web
open Suave.Types
open Suave.Model
let greetings q =
defaultArg (q ^^ "name") "World" |> sprintf "Hello %s"
let sample : WebPart =
path "/hello" >>= choose [
GET >>= request(fun r -> OK <| greetings (query r))
POST >>= request(fun r -> OK <| greetings (form r))
NOT_FOUND "Found no handlers" ]
Niestety Dostaję błąd kompilatora na zapytania (R) części:
error FS0001: Expecting a type supporting the operator '^^' but given a function type. You may be missing an argument to a function.
próbowałem zawężenia błąd kompilatora do kilku prostych liniach i teraz to:
let greetings q =
defaultArg (q ^^ "name") "World" |> sprintf "Hello %s"
let q (rqst : string) = query rqst
let t = greetings q
A teraz otrzymasz ten sam błąd kompilatora w wierszu pozdrowienia q. typy w moim przykładzie powyżej są:
query:
string -> (string -> Choice<'T,string>) -> HttpRequest -> Choice<'T,string>
greetings:
(string -> (string -> Choice<obj,string>) -> HttpRequest -> Choice<obj, string>) -> string
q:
string -> ((string -> Choice<'a, string>) -> HttpRequest -> Choice<'a, string>)
Więc moje typy nie są dopasowane, ale nie jestem zbyt pewny jak bym dostać nich dopasować.
Czy przykład jest już nieaktualny? Jakieś pomysły, w jaki sposób mogę uzyskać ten przykład, aby skompilować i uruchomić?
biegnę kompilacji RC Visual Studio 2015
Thanks
Dzięki. Mam teraz próbkę i działa z Twoją pomocą. Odkryłem także, że brakowało mi otwartych dla: open Suave.Utils.Collections To ma definicję operatora ^^ –
@AndyB Faktycznie to zauważyłem, ale nie powinno być potrzebne - moduł jest zdefiniowane jako 'AutoOpen'. – Luaan