Original date:2021-01-11 15:16:54 Edited by: petelomax Subject: Re: wikipedia draft

Comparison with Euphoria

  • Phix has 8-bit strings and variable length slice substitution
  • Phix requires explicit sequence ops such as sq_add() rather than an implicit inline +
  • Phix has structs and classes, with reference semantics
  • What Euphoria calls maps, Phix calls dictionaries, and uses a different syntax
  • Phix has multithreading, as well as multitasking, whereas Euphoria only has the latter
  • Phix allows negative indexes from right to left, mirroring positive indexes' left to right
  • Phix has named parameters, and does not permit parameter omission with ,, syntax
  • Phix allows the explicit := and == as well as the (implicit) = determined from context
  • Phix allows nested constant declarations via the := operator
  • Euphoria does not support the ~ << >> && || operators
  • Phix allows ; as an entirely optional statement separator
  • Euphoria requires equal() and compare() in many cases where Phix allows ==, <, etc.
  • Euphoria allows full expressions in parameter defaults whereas Phix is relatively limited
  • Euphoria returns a length of 1 for an atom, whereas Phix (deliberately) crashes
  • Euphoria requires routine_id("name") whereas Phix also allows a bare name
  • Euphoria requires call_func(rid,{...}) whereas Phix also allows rid(...)
  • Phix allows inline variable declaration in desequencing operations
  • Phix has a format directive to specify compilation options
  • Euphoria can be transpiled to C, Phix cannot
  • The ternary operator (iff) in Phix has full short-circuit evaluation
  • Phix allows forward routine declarations and un-named parameters
  • Euphoria supports binary/octal/hex/decimal, Phix supports all number bases 2..36
  • Euphoria allows floating-point for loop control variables, Phix does not
  • Phix allows static variables and routine-level constants (except on fwd calls)
  • Euphoria supports enum by /N, which Phix does not
  • Euphoria's private/export/global are all simply treated as global by Phix
  • Several include and with/without options are different and/or incompatible
  • Euphoria namespaces can reference the current file, which is broken in Phix
  • Euphoria allows forward references to variables, Phix does not
  • Euphoria allows implicit discard of function results, Phix requires "{} ="
  • Euphoria has with label, break label, and a loop construct, Phix does not
  • Phix has a try/catch/throw, whereas Euphoria has no exception handling
  • Phix allows min(i,j) as well as min({i,j,k,..}), ditto max()
  • Euphoria still has match_from() whereas Phix relies on match() optional start
  • Euphoria requires explict includes for many things Phix can auto-include
  • Euphoria yields 97.36 for lower(65.36) whereas Phix yields 65.36
  • Euphoria permits daisy-chaining delete_routine(), Phix is single-shot
  • Euphoria must allocate_string for c_func, Phix can pass strings directly
  • Phix supports inline assembly (and sometimes relies on it)
  • The machine_func/machine_proc of Euphoria are mostly deprecated in Phix
  • Euphoria allows goto whereas Phix used #ilASM{ jmp :lbl } to deter newbies
  • Despite all these, quite a bit of legacy code still runs happily on both.

Wow, that has grown a few extra limbs. . .

Not Categorized, Please Help


Quick Links

User menu

Not signed in.

Misc Menu