Hacker Newsnew | past | comments | ask | show | jobs | submit | malakai521's commentslogin

You can already self-host a lot of open source software today, but people still buy subscriptions for SaaS-es


Then, you would be able to avoid paying their subscription ;)


It happens when you use adblocker


mmm, is possible to workaround?


A nicer, cleaner and simpler syntax, superior pattern matching, active patterns, discriminated unions and computation expressions


C# has the equivalent of active patterns these days.


It does not


The syntax is exactly the same. You have `var x = await` in C# and `let! x =` in F#

The controller handler is also the same. It will be marked with `async` keyword in C# and `task` CE in F#


It's absolutely not exactly the same; let! is only available within a computation block. If you want to return some value from the computation block and return to Functional land without having to pause the thread you need to use a continuation, which C# has built in syntactic sugar for in async/await and F# does not.


`await` can only be used in an `async` function. How is that so different from `let!` only being available in a computation expression?


because an async function doesn't require you to change syntaxes to get them to work


It's actually sort of the other way round. C# has hardcoded syntax for async/await. F#'s syntax for async/await is a fully-general user-accessible mechanism.


They're not so different in that regard. C# `await` can be adapted by making an awaitable and awaiter type[1], which isn't to dissimilar to how a computation expression in F# needs to implement methods `Bind`, `Return`, `Yield`, etc.

In both languages these patterns make up for the absence of typeclasses to express things like a functor, applicative, monad, comonad, etc.

[1]https://ecma-international.org/wp-content/uploads/ECMA-334_7...


A computation block is the equivatent of an async function;


`var post = await _postService.getById(id);`

the F# equivalent is

`let! post = _postService.getById id`


You're missing the task {} block


This assumes the context is already a task computation expression, which is what you'd have in asynchronous code.


and the C# is missing the `async Task` boilerplate


Close to AGI? It's a different type of search engine (hard to say if better or worse) and has nothing to do with intelligence


I was trying to be tongue in the cheek - my point is emphasizing dangers and restricting access can act as a form of marketing.


Yes, it's entered manually :)


I've done front-end with PHP, ASP.NET Web Forms, Razor, jQuery, AngularJS, Angular and React and React was by far the most enjoyable experience I've had. It made front-end development tolerable and even fun. I've never seen React code that was as horrible as Angular one.


But, but, what do I do with the EnumerateAll@injectables plugin that I bought for Jetbrains? Do I have to not write all these @s??? What is that key in the keyboard if not for @singleton@injectable@module@component??


How is Internet Explorer mainstream browser? It has finally died and can't even be used anymore on Windows (unless you're running some old version with updates turned off)


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: