Comment by jjk7

Comment by jjk7 a day ago

4 replies

The differences seem relatively minor. Your specific example can be worked around by using a tuple; which in most cases does what you want.

itishappy a day ago

Altering python's core datatypes is not what I'd call minor.

They don't even mention the changes to `list`.

> Integers: Codon's int is a 64-bit signed integer, whereas Python's (after version 3) can be arbitrarily large. However Codon does support larger integers via Int[N] where N is the bit width.

> Strings: Codon currently uses ASCII strings unlike Python's unicode strings.

> Dictionaries: Codon's dictionary type does not preserve insertion order, unlike Python's as of 3.6.

> Tuples: Since tuples compile down to structs, tuple lengths must be known at compile time, meaning you can't convert an arbitrarily-sized list to a tuple, for instance.

https://docs.exaloop.io/codon/general/differences

Pretty sure this means the following doesn't work either:

    config = { "name": "John Doe", "age": 32 }
Note: It looks like you can get around this via Python interop, but that further supports the point that this isn't really Python.
  • dathinab a day ago

    > Strings: Codon currently uses ASCII strings unlike Python's unicode strings.

    wtf this is a supper big issue making this basically unusable for anything handling text (and potentially even just fixed indents, if you aren't limited to EU+US having non us-ascii idents in code or text is common, i.e. while EU companies most times code in english this is much less likely in Asia, especially China and Japan.

    it isn't even really a performance benefit compared to utf-8 as utf-8 only using us-ascii letters _is_ us-ascii and you don't have to use unicode aware string operations

    • gpderetta 18 hours ago

      In fact most EU languages are not representable in ASCII.

    • robjwells 21 hours ago

      Yeah this is a baffling decision. I’d like to know what the motivation is. ASCII doesn’t even contain € or £.