|
I've been using F# almost since it came out. Initially, I was using it to simulate performance of large government pension funds. Lately, I've been building an infrastructure to allow me to build simulations of adaptive social systems.
In terms of coding style, I find myself combining object-oriented and functional styles in the same programs, the object-oriented for interfacing with .NET/WPF types, and the functional where it seems natural.
There are several things I really like about F#. First, it allows me to fit a lot of computation into just a few lines of code: No pages of curly brackets and semicolons. Second, I don't feel straight-jacketed into a particular coding style; I can use what is appropriate in the circumstances. Third, it is relatively free of arcana like annotations. Fourth, you don't have to know everything to do anything. And fifth, the combination of Visual Studio and the F# interpreter rocks!
I hope this is helpful.
|
|
|
|
|
I use F# for everything I can without getting in trouble. (I'm supposed to be using C#.)
It has many features that make common programming operations easier, but that are not available in many mainstream languages (including C#), for example:
- Automatic type elision (C# has this with var keyword, but in F# it's somewhat more powerful and can identify function types, etc)
- Discriminated union types (i.e. a value that can be either THIS or THAT, but not both)
type GameResult =
| Winner of playerName: string
| Stalemate
- Record types - easy copy-and-update syntax and automatic structural comparison
let youngBiff = { Name = "Biff Tannen"; Age = 18 }
let oldBiff = { youngBiff with Age = 73 }
youngBiff = oldBiff
It's also great for scripting. You can easily run and test individual code lines, functions, etc. in F# interactive.
It is definitely multi-paradigm -- it's "functional first", but I also prefer writing OO and imperative code in F# because of features such as the ones mentioned above.
I wish F# would supplant C# (or at least gain parity) as the premier .NET language. I don't think there's anything C# does better (except this). But alas, it seems like we're more likely to see C# slowly turn into F# with curly brackets, semicolons, and superfluous type definitions.
|
|
|
|
|
xkcd: Logical[^] - I say nothing. Especially after a visit to QA.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
QA, where logic beg....ends
Rules for the FOSW ![ ^]
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
QA: where knowledge goes to die.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Stop crying. You probably hired some company to post these deliberately dorky questions, so that you guys can pounce on them.
I am endeavoring, ma'am, to construct a mnemonic memory circuit using stone knives and bearskins.
|
|
|
|
|
Circuit Cake[^]
I want that!
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
|
Diode, could you not resist a good cake?
|
|
|
|
|
That is the current thinking. I don't personally have the capacitor to think of any puns, though...
|
|
|
|
|
You've led me to think we could register more pun. Thank you for being the inductor of puns here.
modified 12-Oct-17 19:45pm.
|
|
|
|
|
I think I'd take a Megabyte!
Anything that is unrelated to elephants is irrelephant Anonymous
- The problem with quotes on the internet is that you can never tell if they're genuine Winston Churchill, 1944
- I'd just like a chance to prove that money can't make me happy. Me, all the time
|
|
|
|
|
|
Your oven, a few ingredients and a little time.
Don't tell me you are helpless in the kitchen.
I am endeavoring, ma'am, to construct a mnemonic memory circuit using stone knives and bearskins.
|
|
|
|
|
Far from helpless in the kitchen,
time is the issue...
|
|
|
|
|
Perhaps we could do something incredibly nerdy, like printing it with a food printer and using a real schematic.
I am endeavoring, ma'am, to construct a mnemonic memory circuit using stone knives and bearskins.
|
|
|
|
|
The City Of Munich has determined that it was a big mistake to go Linux:
Ditching Windows for Linux led to 'major difficulties' says open-source champion Munich - TechRepublic[^]
My experience has been that Linux and its family is a PITA to work with. That said, I did find use for a Linux tools that allowed me to repartition the main drive (I was replacing the OEM Windows 8 with Windows 7) and also copy stuff off of another hard drive that was removed from its system (i.e., the old system's display was busted, and I didn't want to spend anymore on that old system, but I wanted to keep some personal files). But in terms of using Linux as a day to day OS, NO WAY!
|
|
|
|
|
With MSFT giving windows away, where is the cost benefit to Linux?
However, with the Munich council, perhaps they are victims of bad advice or bad maintenance?
Linux is a haphazard system, because no one 'owns it'. No one takes responsibility for marketing it, it is left to a developer to tune it to a particular environment, hence it ends up highly customised and non standard, used in applications like settop boxes, payment terminals, or hand held device. Look how successful Android is for example, or the fact you use a Linux OS to pay by credit card, Verifone devices use Linux now, and they have pretty much the entire market in the western world.
But, would I roll it out across a company for desktop use? Dont know. I dont know enough about it in hose situations to say.
|
|
|
|
|
Unix/Linux has a steep steep learning curve. I mean really steep. However, you can do things with it that people only dream of in windows. Microsoft is starting to catch up with things like PowerShell and Windows Nano. But the Unix world has had that for decades now.
IMO, for a server environment it’s a great OS. It’s not meant for the average user though. Never was. Never will be.
Jeremy Falcon
|
|
|
|
|
Jeremy Falcon wrote: Unix/Linux has a steep steep learning curve. I mean really steep.
And the fanbois seem to be proud of that. For every action there is a highly encrypted command that looks something like a hashed value! I jest but a little - it was a long time ago that I helped administer a Unix/Windows (3.1 Workgroups!) setup, and although it was fun, having to look up all the arcane crap every time I wanted to so something simple really sucked!
It Is The Absolute Verifiable Truth & Proven Fact
That Your Belly-Button Signature Ties
To Viviparous Mama.
|
|
|
|
|
Jeremy Falcon wrote: I mean really steep. However, you can do things with it that people only dream of in windows
From the kernel perspective you can do the same thing in Windows as you can in Linux, and there is your learning curve, the Windows Kernel. It isnt steep, it is vertical, with overhangs.
Jeremy Falcon wrote: It’s not meant for the average user though. Never was. Never will be
Agree 100%. It is an engineers system.
|
|
|
|
|
Jeremy Falcon wrote: It’s not meant for the average user though. Never was. Never will be. You mean it's not the year of the desktop?
This space for rent
|
|
|
|
|
UNIX evolved as a data processing tool, Windows as a desktop OS.
UNIX has a simple philosophy - here's a stream of data, let's manipulate it. Windows doesn't have that kind of conceptual foundation, it's more of an aggregated set of tools and features. There's a purity and a power to UNIX that I rather love.
That said, LINUX is not UNIX. LINUX is something else altogether - it may have started as an attempt to clone UNIX but it has become its own beast, free to evolve/devolve into whatever directions a diverse group of developers want to take it.
I have no direct experience of LINUX (I used to work with SCO UNIX, HPUX and AIX before I got drawn into the .NET world) so I'm in no position to comment on its technical merits but the lack of central control would seriously deter me from ever considering it for an enterprise platform.
98.4% of statistics are made up on the spot.
|
|
|
|
|
Jeremy Falcon wrote: you can do things with it that people only dream of in windows
Such as?
|
|
|
|
|
The list is too long to go into right over my phone (I be typing on it) now but one such example is recompile the kernel to remove uneeded code for a specific server environment. It’s faster and from a security standpoint not having code you don’t need can help with exploits in that uneeded code.
Jeremy Falcon
|
|
|
|