Maybe python should support arrow syntax for easier use async call ?

# The example works with tornado dev verison & python3.5 import tornado from tornado.httpclient import AsyncHTTPClient from tornado.concurrent import Future from tornado.gen import convert_yielded from functools import wraps Future.__or__ = Future.add_done_callback def future(func): @wraps(func) def _(*args, **kwds): return convert_yielded(func(*args, **kwds)) return _ ############## @future async def ping(url): httpclient = AsyncHTTPClient() r = await httpclient.fetch(url) return r.body.decode('utf-8') ping("http://baidu.com") | ( lambda r:print(r.result()) ) """ Maybe python should support arrow syntax for easier use async call ? Now lambda only can write one line and must have parentheses ... FOR EXAMPLE ping("http://baidu.com") | r -> print(r.result()) print("something else") I saw some discuss in https://wiki.python.org/moin/AlternateLambdaSyntax """ tornado.ioloop.IOLoop.instance().start()

From a quick glance, it looks like you're converting from coroutines back to callbacks just so you can partially hide the callbacks. Why not just stick with coroutines? Compare: ping("http://baidu.com") | r -> print(r.result()) print("something else") r = await ping("http://baidu.com") print(r.result()) print("something else") And this doesn't require a new operator, or multiline lambdas, or a new operator that does its thing and also introduces a multiline lambda, or anything else. Sent from my iPhone

From a quick glance, it looks like you're converting from coroutines back to callbacks just so you can partially hide the callbacks. Why not just stick with coroutines? Compare: ping("http://baidu.com") | r -> print(r.result()) print("something else") r = await ping("http://baidu.com") print(r.result()) print("something else") And this doesn't require a new operator, or multiline lambdas, or a new operator that does its thing and also introduces a multiline lambda, or anything else. Sent from my iPhone
participants (2)
-
Andrew Barnert
-
张沈鹏