Live data from Hacker News

F# Not just for finance

fsharp.tv

101–110 of 138 posts

Re: F# Not just for finance

#101
post #95
post #92

Earlier quoted context omitted.

F# is a functional first language, yes, C# with Func can do many things, but functional code in F# is just smooth and easy, unlike C#, where you have to put up with lot of noise.

I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language, that is "Functional programming is a broad term that at its core describes languages that allow you to pass functions around as values to other functions". Even if that meant something in the past, it really isn't a useful definition any more, because pretty much all languages…

Pure functions, i.e. that are 1) idempotent 2) have all their arguments passed in 3) cause no side effects as a by product of evaluating the function are fundamental to functional programming.

Re: F# Not just for finance

#102
post #87

Earlier quoted context omitted.

it is 'paket.references' file next to each proj file and a single 'paket.dependencies' at the root of the repository. You can also integrate the restore part to msbuild so it works out of box from visual studio, msbuild, teamcity, whatever. People prefer though to have separate restore packages step, the same way people prefer to use a better tool than raw msbuild to orchestrate build tasks (tool such as FAKE http://…

Thanks for that. So I assume from this that I could drop the Dependencies project that we're using for paket.dependencies. Would the auto-migrator deal with this do you think? I guess it seems like it would.

Sorry, I think I misunderstood your setup.

The proper way to do it with paket would be:

* get rid of the Dependencies project (it was a side effect of trying to cope with the pain of using raw nuget)

* add a paket.dependencies at the root of your repository listing all nugets used across the solutions

* next to each project, add a paket.references file with the names of the dependencies (only top level, you don't need to list transitive ones)

running the convert-from-nuget command should practically work out of the box if you don't have far out inconsistencies (which I believe you managed by reducing amount of packages.config files), but I'd recommend to do another round of sanitization similar to what I'm describing.

I think if you give it half a day of studying / using paket on a smaller repository, you'll figure out all the things you need to accomplish migration on a large scale repository, after which you'll be recouping benefits any time you need to adjust references in projects / add or update nuget packages.

Re: F# Not just for finance

#103
post #95

Earlier quoted context omitted.

I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language, that is "Functional programming is a broad term that at its core describes languages that allow you to pass functions around as values to other functions". Even if that meant something in the past, it really isn't a useful definition any more, because pretty much all languages…

Pure functions, i.e. that are 1) idempotent 2) have all their arguments passed in 3) cause no side effects as a by product of evaluating the function are fundamental to functional programming.

But not fundamental to the definition of a functional language. F# isn't pure, but most would call it a functional language - so purity is surely not 'fundamental' - in fact most functional languages aren't pure.

That's why I prefer to stick to the 'expression oriented' concept, it seems to be the thing that captures most, if not all, functional languages. But I guess just like there are plenty of people that wouldn't call Java OO (and would prefer the Alan Kay definition), there are plenty that will disagree with any definition of 'functional'

(preparing for the inevitable 'functional first' comment).

Re: F# Not just for finance

#104

I want to suggest looking at a language like Erlang/Elixir that didn't start out from corporate self-interest (i.e., was open-source from the get-go) but a rising functional tide floats all boats. (And besides, Elixir "borrowed" a few good ideas from F#.) I've had nothing but good experiences during my forays into functional langs. Here's to a more functional, immutable, easily-concurrent, easily-unit-tested future

As commented by others, F# was part of Microsoft Research, and not taken up by MS or other corporations when it was started.

Erlang started out in Ericsson, a corporation. Elixir and LFE (Lisp Flavored Erlang) started out opensource and are still opensource.

The term 'corporate self-interest' seems misplaced here, with the parenthetical remark turning it into the antonym of 'open-source'. The term proprietary, commercial or close-sourced seem more neutral and correct.

Erlang started inhouse at Ericsson, like F# did at MS Research, except it was for a company's immediate business needs or 'self-interest' to program their telecomm switches.

Elixir grew out of one person's frustration with Ruby's concurrency (Jose Valim), and a desire to have what Erlang offered him along with the BEAM VM and OTP. It has Ruby-like syntax, Jose is a popular Rubyist, and great tooling along with some other functional structures Jose added that he thought were missing in Erlang. [2]

Pony is an OO, actor-based, open source language, yet it has a lot of corporate pickup from fintech and others, and it seems to be getting ready to shove Erlang/Elixir/LFE aside on concurrency and speed. It has fully-concurrent garbage collection that doesn't use the "poison pill" message approach to kill all actors.

The creator of Pony, Sylvan Clebsch, has one foot in academia, and the other in business. He has worked on fintech, milsims, and games. [3]

[1] http://www.ponylang.org/

[2] https://www.sitepoint.com/an-interview-with-elixir-creator-j...

[3] http://www.curry-on.org/2015/sessions/pony-making-it-easier-...

Re: F# Not just for finance

#105
post #103

Earlier quoted context omitted.

Pure functions, i.e. that are 1) idempotent 2) have all their arguments passed in 3) cause no side effects as a by product of evaluating the function are fundamental to functional programming.

But not fundamental to the definition of a functional language. F# isn't pure, but most would call it a functional language - so purity is surely not 'fundamental' - in fact most functional languages aren't pure. That's why I prefer to stick to the 'expression oriented' concept, it seems to be the thing that captures most, if not all, functional languages. But I guess just like there are plenty of people that wouldn'…

Yeah, I could go along with that.

Re: F# Not just for finance

#106
post #99
post #84

Earlier quoted context omitted.

What languages and platform are you using? I know healthcare insurance pricing has become the most insane invention of bureaucracy on the planet. That is why I can pay cash out of pocket and sometimes get an 85% discount. The providers don't have to chase their money from the insurance companies - private and government included.

> What languages and platform are you using? C# for the core app, C# and F# for satellite services. Not sure on what you're asking re: platform. If you mean hosting? Then we roll our own servers in tier 4 data-centres. If you mean OS/framework: Windows Server/.NET

Thanks for the information. Any mobile dev with F#, or is it all desk-based?

Re: F# Not just for finance

#107
post #95
post #92

Earlier quoted context omitted.

F# is a functional first language, yes, C# with Func can do many things, but functional code in F# is just smooth and easy, unlike C#, where you have to put up with lot of noise.

I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language, that is "Functional programming is a broad term that at its core describes languages that allow you to pass functions around as values to other functions". Even if that meant something in the past, it really isn't a useful definition any more, because pretty much all languages…

> "I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language"

sremani != ZenoArrow (though if you read this sremani, thank you for attempting to clarify).

There are many 'multi-paradigm' languages, and C# is one of them. From the C# Wikipedia page...

https://en.wikipedia.org/wiki/C_Sharp_(programming_language)

"C# (pronounced as see sharp) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines."

What makes a language 'functional' is first-class functions (i.e. functions that can be treated as values, which is what I was referring to in my earlier post).

As sremani said, F# is 'functional first', in the sense that the language is designed to make functional algorithms straightforward to express. You can write C# in a functional way too, but there's less syntactic sugar for this style of programming.

Hope that clears it up.

Re: F# Not just for finance

#108
post #95

Earlier quoted context omitted.

I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language, that is "Functional programming is a broad term that at its core describes languages that allow you to pass functions around as values to other functions". Even if that meant something in the past, it really isn't a useful definition any more, because pretty much all languages…

> "I haven't mentioned or was making any points about F# or C#; I was commenting on what appears to be your definition of a functional language" sremani != ZenoArrow (though if you read this sremani, thank you for attempting to clarify). There are many 'multi-paradigm' languages, and C# is one of them. From the C# Wikipedia page... https://en.wikipedia.org/wiki/C_Sharp_(programming_language) "C# (pronounced as see sh…

> sremani != ZenoArrow

Apologies, my mistake.

> Hope that clears it up.

First paragraph on the Wikipedia page for Functional Programming [1]:

"In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions[1] or declarations[2] instead of statements."

I'll stick with my definition.

Hope that clears it up.

[1] https://en.wikipedia.org/wiki/Functional_programming

Re: F# Not just for finance

#109
post #18

Is anyone using F# on Linux? How's the experience?

Im using it on linux, its pretty good in my opinion, im still learning, but packet and stuff like that seems to work fine. Im using it with emacs, so i dont really know how you will fare with other editors.

Re: F# Not just for finance

#110
post #87

Earlier quoted context omitted.

Thanks for that. So I assume from this that I could drop the Dependencies project that we're using for paket.dependencies. Would the auto-migrator deal with this do you think? I guess it seems like it would.

Sorry, I think I misunderstood your setup. The proper way to do it with paket would be: * get rid of the Dependencies project (it was a side effect of trying to cope with the pain of using raw nuget) * add a paket.dependencies at the root of your repository listing all nugets used across the solutions * next to each project, add a paket.references file with the names of the dependencies (only top level, you don't nee…

Thanks for the info, very useful. I'll definitely investigate.
Post reply on HN