В Rust'е unwrap_or работает без монадок, кстати. Может быть, люди себе в голове там монадками думают, когда пишут, но в потребительском вопросе оно полностью демонадированное.
Возможно, потому, что проверить длину списка всегда дёшево, а проверить наличие ключа в словаре — требует посчитать хеш ключа и в положительном случае этот же хеш сразу понадобится снова.
# ┌──────────────┬─ один доступ к памяти, два сравнения
x = xs[i] if 0 <= i < len(xs) else default_value
# └───┴── ещё один доступ к памяти
# ┌────┬─ хеш + обработка коллизий
x = d[k] if k in d else default_value
# └──┴─ ещё раз хеш + обработка коллизий
# ┌─────┬─ один раз хеш + обработка коллизий
x = d.get(k, default_value)
no subject
Date: 2022-09-18 03:20 pm (UTC)Гвидо сказал, что никаких категорий и монад не знает, и знать не собирается. Ну и.
no subject
Date: 2022-09-18 04:26 pm (UTC)no subject
Date: 2022-09-18 03:53 pm (UTC)no subject
Date: 2022-09-18 04:25 pm (UTC)no subject
Date: 2022-09-18 06:15 pm (UTC)Возможно, потому, что проверить длину списка всегда дёшево, а проверить наличие ключа в словаре — требует посчитать хеш ключа и в положительном случае этот же хеш сразу понадобится снова.