I've been looking to learn functional programming on and off for a few years now. Mainly I've looked into Haskell, but I've always gotten stuck. My guess is that I'm just not smart enough for such an academic language. I get stuck with trying to understand certain concepts, and all of a sudden I'm reading about category theory without understanding anything.
But the other day I decided I'd look into dotnet core and the F# language. And for some reason I find it much more accessible.
Maybe it's just that the resources on the web are more accessible for someone like me, who doesn't have a strong background in maths.
Anyways I set out to create a simple lite tcp socket server that would just write something out to the client that connects and then close the connection.
And heres what I ended up with:
module SocketServer open System open System.Net open System.Net.Sockets open System.Threading.Tasks let writeToSocket(socket:Socket) = let stream = new NetworkStream(socket) let bytes = "Hello World\n"B stream.Write(bytes, 0, bytes.Length) stream.Dispose() socket.Dispose() let startListening port = let local = IPAddress.Parse "127.0.0.1" let listener = new TcpListener(localaddr=local, port=port) listener.Start() printfn "%i is the port" port while true do Console.WriteLine "Waiting for connection..." listener.Server.Accept() |> writeToSocket
You can checkout the code above here, I'll keep on hacking on this server and see what I can do with it.
In the mean time if you're interested in looking into F# I highly recommend reading through some or all of the posts on the site [fsharpforfunandprofit.com](https://fsharpforfunandprofit.com/" "_target=blank)
I must warn you though, there aren't that many examples on the web that helps you when you want to mess around with the dotnet core api's with F#. You're pretty much alone with that.