F# 块,在'之后;让';还没有完成。所需声明

F# 块,在'之后;让';还没有完成。所需声明,f#,F#,首先,我想指出,我可以用不正确的方式翻译错误消息。。。这个错误是关于什么的?我应该如何编写代码 [EntryPoint] let Main (args:string[]) = let start = startServer (args.[0]) Console.Read() 我不明白我该怎么做才能让编译器快乐。以下代码段正确吗 let rec handle = let handler = socket.Accept

首先,我想指出,我可以用不正确的方式翻译错误消息。。。这个错误是关于什么的?我应该如何编写代码

    [EntryPoint]
    let Main (args:string[]) =
            let start = startServer (args.[0]) 
            Console.Read()
我不明白我该怎么做才能让编译器快乐。以下代码段正确吗

let rec handle =
       let handler = socket.Accept()   
       let rec recieveData =
           let bytesRec = handler.Receive(bytes)
           let data = Encoding.ASCII.GetString(bytes,0,bytesRec)
           Console.WriteLine( "Text received : {0}", data)
       Console.Read()
   0
[]
let Main(参数:字符串[])=
let start=startServer args。[0]
Console.Read()

我不知道你的代码应该做什么,因为它有外部依赖项,但至少你的问题是缩进:F#中的空格很重要,特别是在确定词法范围方面起着重要作用。所以对于初学者来说,你需要修正缩进,比如

[EntryPoint]
let Main (args:string[]) =
    let start = startServer (args.[0]) 
    Console.Read()

let rec handle =
   let handler = socket.Accept()   
   let rec recieveData =
       let bytesRec = handler.Receive(bytes)
       let data = Encoding.ASCII.GetString(bytes,0,bytesRec)
       Console.WriteLine( "Text received : {0}", data)
   Console.Read()
   0
此外,如果不正确,则使用
rec
值似乎是不必要的。奇怪的是,您在
句柄的主体中执行了大量工作
让表达式仅将其绑定到
0
。。。你是说
handle
还是
receivedata
是函数?如果是这样的话,也许你是有意的

let handle socket = //make handle a function with socket an explicit dependency
   let handler = socket.Accept()
   let bytesRec = handler.Receive(bytes)
   let data = Encoding.ASCII.GetString(bytes,0,bytesRec)
   Console.WriteLine( "Text received : {0}", data)
   Console.Read() |> ignore //probably you are using Read to wait for user interaction to continue, but just ignore the result (returning unit) instead of returning 0

我刚刚使用套接字启动服务器。感谢您的增强:)
let handle socket = //make handle a function with socket an explicit dependency
   let handler = socket.Accept()
   let bytesRec = handler.Receive(bytes)
   let data = Encoding.ASCII.GetString(bytes,0,bytesRec)
   Console.WriteLine( "Text received : {0}", data)
   Console.Read() |> ignore //probably you are using Read to wait for user interaction to continue, but just ignore the result (returning unit) instead of returning 0