courses: if not course.mandatory: continue for book in course.textbooks: if i.have(book): continue if book.price < 1000: result += book.price else: result += 1000 return result • ループを書いた方が読みやすい • 状態変化は関数の中に隠蔽する ◦ 関数の外から見れば状態変化してな いので「外からは」関数型 ▪ 状態変化を考えなくて良い ▪ 状態を外から触れない ◦ 「中は」関数型じゃないが、短く端的な らまあ別によいのでは ◦ 参考:On Lisp 第3章
if i % 2 == 0] # dict str_int = {str(i): i for i in range(30)} # set friends = {f for c in children for f in c.friends} # gen even_gen = (i for i in range(30) if i % 2 == 0)