Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. F# Book Suggestions?

F# Book Suggestions?

Scheduled Pinned Locked Moved The Lounge
tutoriallearningcsharpcomregex
10 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • J Offline
    J Offline
    Jon McKee
    wrote on last edited by
    #1

    Been learning F# through the MS F# reference source but it seems very contradictory in some areas and devoid of meaningful explanation in others. I found the [F# foundation site](https://fsharp.org/learn/) which has some good reference material but I was curious if anyone here has a good book recommendation from their list or elsewhere? I'm the type that wants to know exactly what something does and why it's useful, not just told to use x in situation y, and unfortunately in my experience a lot of tutorial-type books tend to avoid those more difficult questions. For example, I'd love to figure out why type Class6<'T when 'T : (member Property1: int)>=class end is used as a [legal example of a generic](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/constraints) in the MS F# reference source when that same documentation says member constraints can only be used with [statically resolved type parameters](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/statically-resolved-type-parameters), not normal generics. Or why structs are even a thing in F# considering struct records accomplish all of the same things, PLUS they play nice with type inference in situations like pattern matching where normal structs require a when clause. :doh:

    M G S 3 Replies Last reply
    0
    • J Jon McKee

      Been learning F# through the MS F# reference source but it seems very contradictory in some areas and devoid of meaningful explanation in others. I found the [F# foundation site](https://fsharp.org/learn/) which has some good reference material but I was curious if anyone here has a good book recommendation from their list or elsewhere? I'm the type that wants to know exactly what something does and why it's useful, not just told to use x in situation y, and unfortunately in my experience a lot of tutorial-type books tend to avoid those more difficult questions. For example, I'd love to figure out why type Class6<'T when 'T : (member Property1: int)>=class end is used as a [legal example of a generic](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/constraints) in the MS F# reference source when that same documentation says member constraints can only be used with [statically resolved type parameters](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/statically-resolved-type-parameters), not normal generics. Or why structs are even a thing in F# considering struct records accomplish all of the same things, PLUS they play nice with type inference in situations like pattern matching where normal structs require a when clause. :doh:

      M Offline
      M Offline
      Mladen Jankovic
      wrote on last edited by
      #2

      Jon McKee wrote:

      Or why structs are even a thing in F#

      The same reason you have `byref`s and other "strange" things... interoperability with .NET ecosystem and to obey CLS/CTS.

      J 1 Reply Last reply
      0
      • M Mladen Jankovic

        Jon McKee wrote:

        Or why structs are even a thing in F#

        The same reason you have `byref`s and other "strange" things... interoperability with .NET ecosystem and to obey CLS/CTS.

        J Offline
        J Offline
        Jon McKee
        wrote on last edited by
        #3

        Yea, I'll have to dig deeper into this because it seems like struct records are just a strictly better version of a basic struct. You can still use the IsByRefLikeAttribute too. It probably will end up being some edge-case interoperability like you mentioned :thumbsup:

        M 1 Reply Last reply
        0
        • J Jon McKee

          Yea, I'll have to dig deeper into this because it seems like struct records are just a strictly better version of a basic struct. You can still use the IsByRefLikeAttribute too. It probably will end up being some edge-case interoperability like you mentioned :thumbsup:

          M Offline
          M Offline
          Mladen Jankovic
          wrote on last edited by
          #4

          As for a book, I doubt you'll find one that go into more bizarre language details. I read Expert F# [Apress] and Programming F# [O’Reilly]. I enjoyed the second one better, but seems like there are no newer editions which would cover more recent versions of the language.

          J 1 Reply Last reply
          0
          • M Mladen Jankovic

            As for a book, I doubt you'll find one that go into more bizarre language details. I read Expert F# [Apress] and Programming F# [O’Reilly]. I enjoyed the second one better, but seems like there are no newer editions which would cover more recent versions of the language.

            J Offline
            J Offline
            Jon McKee
            wrote on last edited by
            #5

            I'll check those out, thanks! It doesn't really bother me if the book is a bit outdated as long as it's good. I can always go through release notes to see what changed :)

            1 Reply Last reply
            0
            • J Jon McKee

              Been learning F# through the MS F# reference source but it seems very contradictory in some areas and devoid of meaningful explanation in others. I found the [F# foundation site](https://fsharp.org/learn/) which has some good reference material but I was curious if anyone here has a good book recommendation from their list or elsewhere? I'm the type that wants to know exactly what something does and why it's useful, not just told to use x in situation y, and unfortunately in my experience a lot of tutorial-type books tend to avoid those more difficult questions. For example, I'd love to figure out why type Class6<'T when 'T : (member Property1: int)>=class end is used as a [legal example of a generic](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/constraints) in the MS F# reference source when that same documentation says member constraints can only be used with [statically resolved type parameters](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/statically-resolved-type-parameters), not normal generics. Or why structs are even a thing in F# considering struct records accomplish all of the same things, PLUS they play nice with type inference in situations like pattern matching where normal structs require a when clause. :doh:

              G Offline
              G Offline
              Gaston Verelst
              wrote on last edited by
              #6

              I suppose you already found this excellent site: [https://fsharpforfunandprofit.com/\](https://fsharpforfunandprofit.com/) It not only covers the language, but also many concepts. I read big parts of it when I was commuting by train (in Belgium that gives you sometimes more time than you planned ;-))

              Check out my blog at http://msdev.pro/

              S 1 Reply Last reply
              0
              • G Gaston Verelst

                I suppose you already found this excellent site: [https://fsharpforfunandprofit.com/\](https://fsharpforfunandprofit.com/) It not only covers the language, but also many concepts. I read big parts of it when I was commuting by train (in Belgium that gives you sometimes more time than you planned ;-))

                Check out my blog at http://msdev.pro/

                S Offline
                S Offline
                Stuart Dootson
                wrote on last edited by
                #7

                Gaston Verelst wrote:

                I read big parts of it when I was commuting by train (in Belgium that gives you sometimes more time than you planned ;-) )

                I hope you read the ['railway oriented programming' parts](https://fsharpforfunandprofit.com/rop/) on the train...

                Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                G 1 Reply Last reply
                0
                • J Jon McKee

                  Been learning F# through the MS F# reference source but it seems very contradictory in some areas and devoid of meaningful explanation in others. I found the [F# foundation site](https://fsharp.org/learn/) which has some good reference material but I was curious if anyone here has a good book recommendation from their list or elsewhere? I'm the type that wants to know exactly what something does and why it's useful, not just told to use x in situation y, and unfortunately in my experience a lot of tutorial-type books tend to avoid those more difficult questions. For example, I'd love to figure out why type Class6<'T when 'T : (member Property1: int)>=class end is used as a [legal example of a generic](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/constraints) in the MS F# reference source when that same documentation says member constraints can only be used with [statically resolved type parameters](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/statically-resolved-type-parameters), not normal generics. Or why structs are even a thing in F# considering struct records accomplish all of the same things, PLUS they play nice with type inference in situations like pattern matching where normal structs require a when clause. :doh:

                  S Offline
                  S Offline
                  Stuart Dootson
                  wrote on last edited by
                  #8

                  The two F# books I have (which seem pretty good) are [Essential F#](https://leanpub.com/essential-fsharp) and [Domain Modeling Made Functional](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/), which is by the same gut (Scott Wlaschin) who's produced the [F# for Fun and Profit](https://fsharpforfunandprofit.com/) website mentioned elsewhere. As for the bits of jankiness where F# and .NET collide...well, when you [friction weld](https://youtu.be/MIYJnd2X9eU) a functional first language like [OCaml](https://ocaml.org/) with an OOP first VM as in .NET, you get some mess at the boundary...

                  Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                  J 1 Reply Last reply
                  0
                  • S Stuart Dootson

                    Gaston Verelst wrote:

                    I read big parts of it when I was commuting by train (in Belgium that gives you sometimes more time than you planned ;-) )

                    I hope you read the ['railway oriented programming' parts](https://fsharpforfunandprofit.com/rop/) on the train...

                    Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                    G Offline
                    G Offline
                    Gaston Verelst
                    wrote on last edited by
                    #9

                    I did, it gave me a bitter-sweet taste ;-)

                    Check out my blog at http://msdev.pro/

                    1 Reply Last reply
                    0
                    • S Stuart Dootson

                      The two F# books I have (which seem pretty good) are [Essential F#](https://leanpub.com/essential-fsharp) and [Domain Modeling Made Functional](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/), which is by the same gut (Scott Wlaschin) who's produced the [F# for Fun and Profit](https://fsharpforfunandprofit.com/) website mentioned elsewhere. As for the bits of jankiness where F# and .NET collide...well, when you [friction weld](https://youtu.be/MIYJnd2X9eU) a functional first language like [OCaml](https://ocaml.org/) with an OOP first VM as in .NET, you get some mess at the boundary...

                      Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

                      J Offline
                      J Offline
                      Jon McKee
                      wrote on last edited by
                      #10

                      I wasn't aware F# was based on OCaml (never used it but heard about it). Looked up the syntax and yea, I definitely see the inspiration.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups