<div dir="ltr"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default">I'm open to any changes or criticism.</div><div class="gmail_default"><br></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">import atexit</span></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">as atexit.register:</span><br></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">    # ...do various cleanup tasks...</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">    print('Goodbye')</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif"># is approximately equivalent to => </font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">import atexit</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">def _():</div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><div class="gmail_default" style="text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif"><span>    </span># ...do various cleanup tasks...</font></div><div class="gmail_default" style="text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">    print('Goodbye')</font></div></div></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">atexit.register(_)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># flask example</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">@app.route("/")</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def hello():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># is approximately equivalent to =></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/'):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">@app.route('/user/<username>')</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def show_user_profile(username):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    # show the user profile for that user</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return 'User %s' % username</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/user/<username>') do username:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def print_sorted(iterable, block):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    sorted(iterable, )</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">l = [1, 2, 3, 4, 'spam']</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as l.sort(key=%) do obj:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return str(obj)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># multiple arguments</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as spam do a, b:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    ...</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">## `%`  function call syntax</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">Calling a function with a single percent in place of an argument creates a new function. </font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">lumberjack(15, %)</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif"># is equivalent to the expression</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">lambda x: lumberjack(15, %)</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">Using `*` instead of `%` could also be possible.</font></div><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">import threading, time</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def interval(seconds, block):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    def target():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        while True:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            time.sleep(seconds)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            if block():  # stop looping if block returns True</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">                break</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    threading.Thread(target=target).start()</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as interval(5, %):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">   print("chirp")</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># => chirp every 5 seconds on a seperate thread</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as threading.Timer(5, %):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">   print("hi")</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># => say "hi" in 5 seconds</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">## `^` currying function definition syntax?</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">I'm not sure this is necessary or a good idea.</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def interval(seconds, ^block):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    def target():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        while True:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            time.sleep(seconds)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            if block():  # stop looping if block returns True</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">                break</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    threading.Thread(target=target).start()</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># is aprroximately equivalent to</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def interval(seconds, block=None):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    def inner(block):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        def target():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            while True:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">                time.sleep(seconds)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">                if block():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">                    break</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        threading.Thread(target=target).start()</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    if block == None:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        def outer(block):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">            return inner(block)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    else:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        return inner(block)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as interval(5):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    print('chirp')</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># equivalent to </font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">interval(5)(lambda: print('chirp'))</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">### Lazy evaluation of chained `%` calls?</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">This would allow things like:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">start_on_new_thread = threading.Thread(target=%).start()</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">def bong():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    while True:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        time.sleep(6*60)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        print('BONG')</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">start_on_new_thread(bong)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># alternatively</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as start_on_new_thread:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    while True:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        time.sleep(6*60)</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">        print('BONG')</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">## As-do statements in classes</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">class M():</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">     def __init__(self):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">         self.time = 5</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">     as interval(self.time, %):</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">         print('chirp')</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">I'm not sure if this should be valid, and I'd like the community's input on when as-do statements should be bound when as-do.</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">## Proposed Type Hinting Syntax</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/user/<username>') do (username: str): </font></div><div class="gmail_default" style="color:rgb(34,34,34);font-family:Arial,Helvetica,sans-serif;font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">Alternatives:</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/user/<username>') do username: str%</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># like objective-c</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/user/<username>') do username: str^</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"># like coffeescript</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">as app.route('/user/<username>') do username: str -></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">    return "Hello World!"</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">```</font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font color="#000000" face="arial, helvetica, sans-serif">I’m not totally sure of practical uses, but I’m imagining it would make passing a function to another function much more convenient. In React, you pass an argument called `render` to a `FlatList`, and `render` renders an item of the list. `FlatList` is a scrollable list that handles unloading off-screen items and loading items that will appear in the scroll box soon.</font></div></div></div></div></div></div>