On Apr 8, 2016, at 12:25 PM, Thomas Clarke <
clar...@gmail.com> wrote:
>
> All that is needed is VS2015 community, F# 4.0, and VS power tools (for F# 4.0). And .Net.
That should be two items, not four.
F# 4.0 is an option during the Visual Studio 2015 Community installation process, not a separate installation item.
The necessary versions of .NET are also installed along with Visual Studio 2015. You should not have to do anything special. If you think you do, post relevant details.
And the Power Tools are easily installed from within Visual Studio 2015, via Tools > Extensions and Updates > Online > "f# power tools”.
(You might not be aware that this is a change in the free tier of Visual Studio relative to 2013 and prior. Microsoft has finally given up on restricting VS extensions to the paid tiers.)
> But I've tried this on multiple windows PCs with differing results.
Details??
> Maybe I should use Xamarin on Windows as well
No. That was deprecated with the merger of Xamarin into Microsoft. Don’t expect Xamarin Studio for Windows to get any official support.
(Source:
https://www.xamarin.com/faq#xpq6)
I suppose the community might take over maintenance again, so that you might someday see Mono Develop for Windows, but given that Xamarin for Visual Studio is now free for the same reason that they’ve deprecated Xamarin Studio for Windows, I don’t see why you’d hold off your plans waiting for it to appear.
> Currently there is no easy to find shrink-wrapped route to installing on F#/mono on Linux
Sure there is:
http://fsharp.org/use/linux/
http://www.mono-project.com/download/#download-lin
On Ubuntu and Debian, it’s a single command. On Red Hattish Linuxes, you have to tell your OS’s package manager about the Mono package repository, and *then* it’s one command.
Alternatively, there’s .NET Core, if your needs are simple:
https://dotnet.github.io/
There’s a whole lot that .NET can do that .NET Core cannot — no surprise — but for a tutorial class, you might not run up against any of those limitations.
> Ionide with Visual Code looks good!
That would also be a fine companion to .NET Core.
> the 3.1 vs 4.0 thing is confusing.
For your purposes, I don’t see any reason to even think about 3.1. You’re writing new code, not maintaining existing working code.
> When learning F# I found not knowing what was a module-level function and what a method was a pain. String functions the worst. I had not previously used .Net (and that will also be true for my students). String Split, startWith, endsWith, contains are really important and having these available only as a .Net methods is irregular.
Yes, well, that’s the sort of thing you expect from a mixed-paradigm language like F#, where the OCaml standard library is replaced with .NET. You can’t expect it to look like it was designed from the start by a single mind.
Bjarne Stroustrup said, "There are only two kinds of programming languages: those people always bitch about and those nobody uses.” F# is the first kind. :)
The reason this is true is that once a language becomes powerful enough to work for a huge variety of problems, it has become somewhat ugly. F# is uncommonly clean for a language with its power and scope.
> I'd like to teach F# with a good enough selection of functions so that methods need not be used for any of the normal data structure tasks.
Why then use a mixed-paradigm language? F# is not just FP, it’s imperative and OO, and we like it that way. If you want a pure FP language, go hang out with the Scheme and Haskell purists.
(They’re the second kind of programming language. <runs and ducks>)
> It seems to me that having to use library methods and functions is not good when learning.
Tell you what: go read “The Little Schemer” and decide if you really do want to teach a class that builds everything up from primitives.
You might find that greatly preferable, and if so, now you have your textbook.
Personally, I prefer using a language that provides many affordances, so I’m not tempted to reinvent wheels unnecessarily. But then, I’m a practitioner first and a student second.