On Sat, 18 Dec 2010 14:31:12 +0100
Eike Welk
Great that you thought about a syntax for dicts and sets.
One other point that must be solved, is how to distinguish symbols that should be assigned, from symbols that are specify conditions. Ocamls solution is that all symbols are assigned. Conditions must be specified with literals. Here is an example to illustrate it:
This is a simple function that compares its argument "x" to the integer one:
def foo(x): match x with | 1 -> print("x is equal to 1") | _ -> print("x is not equal to 1")
In the code below we want to parametrize the value that we use for comparison. The parameter "a" is introduced for this purpose. Now we need a way to tell the compiler that "x" should be compared to "a"; and not assigned to "a". In Ocaml this is impossible. The compiler would issue a warning ("Redundant case in a pattern matching.").
def foo(x, a): match x with | a -> print("x is equal to %s" % a) | _ -> print("x is not equal to %s" % a)
Maybe you come up with a nice notation for this problem.
No, I would do it like in OCaml, I think (but may be wrong) it fits the python-way, like having no formally qualified readonly or private slots.
By the way, why does no one like those "|" characters? They look good and take up few space!
;-) It does not fit Python overall syntax look. And requires a magic id '_' for default case. And requires adding '->'. And we already have 'case x:' (and 'else') which fit perfectly. And are far more readable (no need to guess what given symbols mean, including the 'sense' of an arrow ;-).
Eike.
Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com