אז מה בכלל יש לכם נגד לולאות?
חבר סיפר השבוע שבתרגיל במכללה בקורס על תכנות פונקציונאלי הם היו צריכים לממש אלגוריתם מסוים "בלי לולאות". התחושה היתה של מימוש בידיים כבולות ולא לגמרי היה ברור מה הבעיה עם לולאות ותכנות פונקציונאלי הבעיה מתחדדת כשנסתכל על שלושת דוגמאות הקוד הבאות:
def double(arr):
result = []
for item in arr:
result.append(item * 2)
return result
def
ולעומתה:
def mymap(f, arr):
result = []
for item in arr:
result.append(f(item))
return result
def double(arr):
return mymap(lambda x: x * 2, arr)
וזו:
def double(arr):
return map(lambda x: x * 2, arr)
אין ספק ששלושתן עושות את אותו דבר, אבל שתי הראשונות "משתמשות בלולאות" והשלישית לא. אז מה קורה פה? ומה בעצם הבעיה עליה אנחנו מנסים להתגבר על כלל ה"בלי לולאות?"