Gauthier Segay

My feedback

  1. 121 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Charles Roddie, this would work with "islands" of C# files compiled together and knowing about previous compiled islands, 1.cs can't know about 4.cs in your case.

    Gauthier Segay commented  · 

    I think kotlin has such support with java too.

    I'd see this idea coming to fruition first in scripting:

    #load @"path/to/file.csx"

    where it is easy to figure out the topoligical graph of script files to include, compile in separate assemblies and link.

    If this is made, then work on same feature in project system would be great.

    I think that would also give few kicks to Jetbrains to finally start implementing F# support and more importantly, this would restore some trust in having the whole of MS people working on .NET focused on making best platform with highest level of interop among all the languages, having them invest major engineering efforts which benefits all the languages (current and future) to have easy embedding of all IL compilers in a meta compiler.

    F# file ordering is also a major aspect making this seem viable.

    Gauthier Segay supported this idea  · 
  2. 248 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    under review  ·  8 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 
  3. 5 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    6 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    I agree with Reed and use same convention, and I do benefit from the warning.

    To workaround the fact you can't use the constructor as first class function only takes a single line function while having the warning and convention of using new only for IDisposable could form a nice convention in F# codebases.

  4. 39 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    29 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    It is unfortunate that this suggestion mixes 2 concerns:

    * declarations to be mutually referential (which most people don't want as seen in comments)

    * have the compiler figure out the order rather than have to specify it manually

    I think the later point would be a great thing for end-users, and that doesn't circumvent at all file ordering being there and necessary, only it would be figured out by the compiler.

    Gauthier Segay supported this idea  · 
  5. 98 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay supported this idea  · 
    Gauthier Segay commented  · 

    I concur that we need fuller support of .net type system.

  6. 1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay shared this idea  · 
  7. 1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Dave, can you show how mixed of positional and indexed arguments would play together?

    Should we reuse string.format notation with braces?

    Gauthier Segay commented  · 

    Dave, do you think that would still be useful with making your variable name short in the scope where you want to print it:

    do
    (**)let n = mySecretNumber
    (**)printfn "%i %x %A" n n n

    I think it is interesting idea (but with a 0 based index and robust compiler checks) but maybe not as useful as string interpolation?

  8. 20 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Don, have you considered that fsc now takes a response file?

    I think the tooling issue is becoming manageable, for the widespread msbuild project files there is fsprojects/forge tool, and I think support for project.json will be added when it matures.

    As for json file in your suggestion, I really don't think json is a human readable format, it is great when you have javascript on one side but that is about it, writing a json file by hand is tedious compared to a more human friendly format (see the file formats used by paket).

    A precompiler directive solution (#require) seems also like a good way to have that made explicit in the source, I think this approach could be studied (with an extra tool as Kevin mentions), but would require some tooling or compiler support (we want error message if a file doesn't exist).

  9. 26 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    8 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    agree with Alexei to have fsharp-y syntax (although I'm not familiar with OCaml, I'm sure there are advantages in the way they open modules), I should have put more details in the suggestion but can't edit it.

    I'm also considering if having "partial" open (to bring only select symbols in scope) is something which would be valuable.

    Gauthier Segay shared this idea  · 
  10. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    F# is functional first but has to support quite a bit of imperative style constructs which makes it very practical.

    Without let, it would be difficult to understand the scope of definitions, difficult to catch if I mistyped a symbol name.

    I think the list of ambiguity this would create is huge and I'm not in favor of this proposition.

  11. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    It seems there are other areas where this could also take place?

    It is a bit annoying to have to explicitly cast but at least it is consistent wherever expected type is not an exact match.

    Introducing this for yield only would create a special case.

  12. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Alexey, your example would cause "This is not a valid constant expression." error.

    Lenne, do you mean the value to be substituted at compile time? (I guess yes as it is a compiler directive).

    I'm not sure I see value in this, is there prior art (any other compiler does that?)

    I generally move those type of strings in a separate module, and can consider generating this module file as a preliminary build step.

    Also, I think this can be addressed by a type provider altogether, maybe you should consider this instead?

  13. 1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Interesting, what about a notation that would bring closer to mathematical notation?

    [0..lst.Length[

    or

    [0..lst.Length)

  14. 11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    I believe a library solution is good enough:

    let undefined () = raise (System.NotImplementedException())

  15. 4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    I'm concerned that "do blocks" will be difficult to discern from "do while" blocks.

    I'd appreciate this feature be brought to F# but it needs to not clash with do blocks IMHO.

  16. 1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay shared this idea  · 
  17. 30 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    5 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay supported this idea  · 
  18. 2 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    What is expected error message if any of the DU member has data defined for it?

  19. 9 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    Actually found out it works with enclosing parens:

    match pat with
    | SynPat.LongIdent(_) -> ()

    but it doesn't work with identifier (case whose utility is close to 0)

    match pat with
    | SynPat.LongIdent(a) -> ()

    Gauthier Segay shared this idea  · 
  20. 11 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: facebook google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  F# Language  ·  Flag idea as inappropriate…  ·  Admin →
    Gauthier Segay commented  · 

    For discrimated union, the root type expose get_Is* methods, it should be exposed as Is* methods instead.

    Gauthier Segay shared this idea  · 
← Previous 1

Feedback and Knowledge Base