Hacker News new | past | comments | ask | show | jobs | submit | more zarathustreal's comments login

My brother in Christ, releasing a tool for free does not exempt it from criticism


At this point, calling it by its correct name (Sum Types) would leave them looking stupid for not using the correct name (Product Types) for their “records”


> not using the correct name (Product Types) for their “records”

There is no single "correct name" as there is no single "problem domain" that covers the algebra of type theory, and the pragmatics of programming in engineering, along with other areas.


That construct has been called a “record” since, I believe, 1970 in Pascal.


But then what name would they use for tuples, which are distinct from records?


both tuples and record (structs) are product types. tuples are "untagged", records/structs are "tagged" (the members have names).

sum types also have tagged and untagged variants. the untagged variants are less useful (more cumbersome) in case of sum types and hence often are not implemented in languages.


C# tuple field names are an interesting case, spiritually similar to this proposal's ad hoc unions: persisted in compiled output via attributes, respected by the compiler even across assembly boundaries, but not actually part of the resulting CLR type. So, e.g., if

  var p = (x: 1, y: 2);
  var q = (u: 1, y: 2);
  var f = ((int x, int y) a) => a.x + a.y;
then

  p == q 
  f(p) == 3
  f(q) == 3
  p.GetType() == q.GetType()
are all true, but

  var r = q.x;
yields the compile-time error

CS1061: '(int u, int v)' does not contain a definition for 'x' and no accessible extension method 'x' accepting a first argument of type '(int u, int v)' could be found (are you missing a using directive or an assembly reference?)

and if

  dynamic d = q;
then

  var s = d.u;
compiles, but throws

RuntimeBinderException: 'System.ValueTuple<int,int>' does not contain a definition for 'u'

at runtime, revealing the underlying CLR type.


> tuples are "untagged", records/structs are "tagged" (the members have names).

Not always true in C#. Tuples can have member names

https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...


Any hints on why you’re adding so many newlines into your comment?


Possibly entered on a narrow mobile device where one sentence can wrap into multiple "lines" that visually approximate paragraphs.


That sounds more like an OOP thing than a type system thing - functional languages make excellent use of type systems without mention of anything remotely sounding like a “Design Pattern (tm)”


Well that depends entirely on what you consider to be the goal - as a software engineer, your role is entirely concerned with engineering excellence. As a member of a team, especially a team of extremely highly paid and highly educated individuals, it is your duty to spend your time (and thus, the company’s resources) efficiently by doing what you’re educated, qualified, and hired to do.


Engineering excellence is a means to an end. Great engineers solve problems - sometimes by writing software.


Few people agree that the goal of SWE is engineering excellence. It is to solve business problems. Engineering excellence is a means to a goal: to be able to solve _difficult_ problems _correctly_ and allow solving new problems _in the future_. All these things can be traded off, and sometimes aren’t even needed at all


You don’t need science to explain how dysfunctional society is. The problem with “soft sciences” is that they can’t produce provably correct information. Incorrect information is worse than no information.


> You don’t need science to explain how dysfunctional society is.

You absolutely do lol, or you're just straight wrong. Take your pick.

> The problem with “soft sciences” is that they can’t produce provably correct information.

Neither can hard sciences. Proofs are incompatible with empiricism. Abductive proofs (which is what the scientific process offers) are necessarily bounded by limited certainty. All you can do is progressively improve certainty approaching 100%, but reaching it is necessarily impossible. This is just basic Hume. You can never be 100% sure the sun will rise tomorrow or that the fundamental laws of physics won't arbitrarily change.

But, the same applies to soft sciences. We can and do increase our certainty continually. This is absolutely worthwhile and is probably far more valuable to humanity than merely modelling physical phenomena.


> You absolutely do lol, or you’re just straight wrong.

This is false, an obvious counter-example is an explanation that happens to be coincidentally correct (without being derived from any science)

-

This seems like an attack on the notion of objective truth which while interesting in the abstract, is not particularly interesting to me personally.


> an obvious counter-example is an explanation that happens to be coincidentally correct

How can you establish "correctness" without something like the scientific method? How do you even bind loosely-defined english to verifiable claims to real-life referents without agreeing with others on terms? No, you're chosen simple, comforting delusion over anything resembling objective truth.

> This seems like an attack on the notion of objective truth

Yes, truth is an apriori concept; objective truth is a silly delusion. Coherence is generally a much stronger concept anyway.


Correctness (of a given assertion) doesn’t need to be established to exist


I’m assuming by “wrong” you mean “false” and not “morally objectionable” therefore I must disagree.

It is an *unsustainable* position to hold that something is bad regardless of whether or not it is true. Basing your morality on potentially false information is a guarantee for conflict.

Likewise, if your morality never changes, especially when you learn and grow from experience, you’re stunting your growth as an individual and causing problems for society as a whole. Imagine a child refusing to update their understanding of morality as they age.


If you don’t have a degree you almost certainly don’t have years of (professional) software development experience.

The only exception in my experience (and this helped me get a job when I was a new grad) is having a large portfolio of tangible projects. Not just react tutorials, programs that solve a problem someone had or did something interesting. For example, I did a lot of programming in middle school and high school related to automating games like RuneScape. Also had a win at the international science and engineering fair in the computing division. It’s safe to claim years of experience when you’ve got something to show for it.


... there are still a lot of people in this business who don't have a college degree. Doesn't stop them from being professionals.


My response was about a person that is finishing up the final year for their degree


My response was about what the original poster wrote, which is that they previously had employment as a full stack dev.


For a more thorough treatment of the subject, I suggest Baudrillard’s “Simulacra and Simulation”


Most companies ban giving feedback for the simple fact that the hiring process is not objective and it’s super easy to accidentally incriminate yourself.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: