@IonideProject is there a way to develop Analyzers with quick feedback? E.g. can I make Ionide load an analyzer that gets recompiled on the fly, or similar? I want to investigate some parts of the AST but don't know what to expect, so quick iteration would be super useful.
@edwinbrady@derKha So now the type is explicit about erasure, so even if a parameter gets erased, you can still pass the right parameter stack through DLL boundaries, interesting! Thank you for the answer!
@edwinbrady@derKha Separate compilation as in compiling separate e.g. DLLs and linking them together? If so, what property of QTT makes that possible compared to the previous version, and what were the limitations before?
@k_cieslak It's almost as though in life the pragmatic focus is on transformation and not the continuity of being. We don't call bread "heated dough", we don't call dough "yeasted water flour". In fact we make specific effort to think of it as a new type of thing. It reduces cognitive load.
New version of @IonideProject released. It contains a fix for a major bug that in last few versions impacted:
* rename
* find-all-references
* cross-file error reporting
* references code lenses
Sorry for the problems.
#fsharp#toolingAdventures
@Tyrrrz @7sharp9_exhumed @maxdeviant This comes from a property called parametricity, which although does not hold for the whole of F# (because of reflection and typeof) it holds in simple cases.
@Tyrrrz @7sharp9_exhumed @maxdeviant Seq.head: seq<'T> -> 'T
It states that for any seq it will return an item, which is impossible for an empty seq, so the function's definition can only typecheck with an exception. Formally there *can not* be a function, which for every seq of every type can give an element.
@Tyrrrz @7sharp9_exhumed @maxdeviant Because there are invariants you can't prove to the compiler. Sometimes you *know* that the function *will not* fail, and don't want to pay the performance or syntactic price of the try version. The function signature tells you clearly that these functions could throw.
As software devs, we have a *responsibility* to build systems that are robust against these kinds of problems. I found that books like "The Field Guide to Understanding Human Error", "The Logic Of Failure", "Normal Accidents", "The Design of Everyday Things" were very helpful.
@k_cieslak@i_no_see_pound@erikuma@ChetHusk@IonideProject I've spent many hours trying to install .NET Core runtimes side-by-side on Manjaro without success. Failed on Ubuntu too. So I think the projects I develop run on the same version as Ionide. I know this is not Ionide's fault, don't know how many people it impacts but it's there.
A friend suggested I post a piece of KyoAni production materials every day as a constant reminder of their legacy and I have enough to last an eternity so here we go
The .Net Language - we'll now innovate AsyncEnumerable by adding yet another special case to compiler!
F# - "Add a general state machine compilation mechanism for F# computation expressions"
Difference between adding random features to the language and language design. #fsharp