それらを定義する私が見つけるようなもの:無名関数に名前を割り当て対ラケットのドキュメント/ハンドブックでは多くの場合、「通常」
(define (greet name)
(format "Hello, ~a!" name))
:私は上でこのことから利点が表示されない
(define greet
(λ (name) (format "Hello, ~a!" name)))
名ではなく(define (ident args...) exprs...)
への機能の割り当て通常の方法は、JSに同じものに類似しているようだ:
// "usual" declaration
function greet (name) { return `Hello ${name}!` };
// assigning
const greet = name => `Hello, ${name}!`;
const greet = function (name) { return `Hello ${name}!` };
またはPython(lambda
は関数ではないため使用されません。 JSで
def greet(name): return f"Hello, {name}!" # full definition
greet = lambda name: f"Hello {name}!" # not idiomatic
- 、)(ローカル
const greet
の範囲は)(グローバルfunction greet
の範囲が異なるので、const greet
を好む:彼らは)あまり有用です。 - Pythonでは、
lambda
は、戻り値である1つの式しか持つことができません。変数を宣言したり割り当てることができないので、適切な定義を優先します。
私の知る限り、スコーピングや(define (ident args...) exprs...)
と(define ident (λ (args...) exprs...)
間で許容されるステートメントのタイプにラケットに違いはありません。
なぜ、もう一方が使用されるのですか?利点はありますか?それは可読性、個人的な好み、または慣用句ですか?