4 ms·
why?
by snowpid 4y ago
why?
- pharmakom 4y agoIn F# list comprehensions, for example, you can have full blown expressions such as loops and conditionals. This is really nice for templating. [ if List.isEmpty items then p “No items” else ul [ for item in items do li [ item ] ] ]
- snowpid 4y agoso? if len(items) == 0: return [p("no items")] else: ul( [ li(item) for item in items ] ) I am also not a fan of convoluted list comprehension (in python) so powerful is not necessarly a good thing.
- pharmakom 4y agoThat only works in a single purpose function. And consider this example: [ h1 “items” if List.isEmpty items then p “No items” else ul [ for item in items do li [ item ] ] ]
- snowpid 4y agoh1(items) + rest of my code... I might see what are you using for but I am not sure if concenating implicitly (or with line breaks / spaces) is a good design decision for a language.
- pharmakom 4y agoThe yield keyword is optional. The result is a List<HtmlElement> I don’t see how this can be done in Python without using mutation, which makes code scattered across multiple statements
- snowpid 4y agoyour example has also multiply statements. The question is more important: Which syntax to a more generally better readability. (as this is solvable in most languages)
- pharmakom 4y agoNo, it is built from pure expressions. This means that our list is defined in one block (everything within the [ ] tokens) and immutability is enforced by the compiler.