10

私は最近、applicative (および代替) をかなり使用してきましたが、私を苛立たせていることの 1 つは、命名法に関する知識が不足していることです。例として、 forfunction nameの代わりに言えるようにしたいです。したがって、 readとほぼ同じように、次のものにはよりわかりやすい名前があります。star thing<*>>>=bind

  • <*>- 申し込み?
  • <*& *>- 左と右が適用されますか?
  • <$>- fmap?
  • <|>

同様に矢印から

  • ***- スプリット?
  • &&&- 扇形に広がります?

これらの名前がある場合、私の検索ではそれらを発見できませんでした. これらについて受け入れられない条件があるかもしれないことは理解していますが、もしあれば知りたいです。

4

3 に答える 3

11

表記はDoaitseSwierstraとLucDuponcheelから来ています。彼らはすでにパーサーコンビネーターのこのインターフェースを識別しており、そうすることが意味のあるところでは彼らの選択を尊重することが重要だと感じました。Doaitseがそれらをどのように発音したかを思い出そうとしていますが、空白を描画しています。

私は彼らが見られ、聞かれることを好まない。実際、私はそれらも見られないことを好みます。したがって、イディオムブラケットです。ただし、特にインスタンスを定義する場合は、名前を付けると便利です。それらに名前を付けるのは私次第ではありません。イディオム全体vsアプリケーションvs良さ-知っている-どのシェナニガンが力の魅力的な研究であったか。私自身の言葉で言えば、それが価値があることについて

  • <*>is'applied(to)'(数学のように、インターフェイスは'純粋で適用されます')
  • *>'無視されます'
  • <*「無視する」
  • <$>'マップされた(上)'
  • <$おそらく「後」ですが、私はそれを何かと呼ぶことをひどく意識していません

重要なアイデア:効果は常に(それが意味するものは何でも)左から右に順番に並べられます。$または*は、左側にあるものが純粋なものか慣用的なものかを示します。シェブロンは、信号のみを指している結果のデータフローを示します。

個々の演算子から離れたレベルの代替発音スキームは、翻訳される可能性があります

f <$> a <*> b <* c <*> d

「イディオム:f、a、b、NOISE c、d」など。しかし、それは本当にブラケットバージョンを読んでいます

(|f a b (-c-) d|)

大声で。

'money'と'splat'は面白いと思いますが、構文のアシデントよりもセマンティクスを優先する方がよいかもしれません。

于 2011-05-01T10:15:25.597 に答える
8

まあ、<$>の同義語ですfmap。また、「applicative」という名前は、私に物事を適用することを考えさせます。それ<*>を行うための主な演算子なので、「適用」という言葉と大まかに関連付けていると思います。コンテキストは通常​​の関数の適用とは少し異なるため、その単語との混乱が生じる可能性がありますが、コンテキストは通常​​十分に明確であるため、私にとってはうまくいきます。 <*>は Control.Monad の関数の同義語でもあるapため、これは「適用」という言葉の使用を裏付けています。

Brent Yorgey のTypeclassopediaは、私がこれのほとんどを学んだ場所です。優れたリソースです。

于 2011-04-29T20:28:19.943 に答える
5

標準的な名前はありませんが、次のように呼ばれることがあります。

  • <*>「スプラ」です
  • <$>「お金」です

そのような:

 f <$> g <*> x

発音されます:

 f `money` g `splat` x

トレバー・エリオットとエリック・メルテンスが発案した用語だと思います。

于 2011-04-29T19:48:25.330 に答える