Skip to main content
QUICK REVIEW

[論文レビュー] The Sketch of a Polymorphic Symphony

Ralf Laemmel|ArXiv.org|Apr 8, 2002
Logic, programming, and type systems参考文献 23被引用数 6
ひとこと要約

この論文は、Haskellにおける関数的戦略の包括的で型安全かつ高度にパrameter化されたモデルを提示している。第一級の多態性とコンストラクタ応用に対する汎用的な fold 組み合わせ子を用いて、一様な型と型固有の走査を統合している。主な貢献は、パラメトリック、内省的、多型的、およびアドホックな多態性を統合したフレームワークを提供し、制御および構造に対する細かい制御を可能にする複雑な走査スキームを表現することにある。

ABSTRACT

In previous work, we have introduced functional strategies, that is, first-class generic functions that can traverse into terms of any type while mixing uniform and type-specific behaviour. In the present paper, we give a detailed description of one particular Haskell-based model of functional strategies. This model is characterised as follows. Firstly, we employ first-class polymorphism as a form of second-order polymorphism as for the mere types of functional strategies. Secondly, we use an encoding scheme of run-time type case for mixing uniform and type-specific behaviour. Thirdly, we base all traversal on a fundamental combinator for folding over constructor applications. Using this model, we capture common strategic traversal schemes in a highly parameterised style. We study two original forms of parameterisation. Firstly, we design parameters for the specific control-flow, data-flow and traversal characteristics of more concrete traversal schemes. Secondly, we use overloading to postpone commitment to a specific type scheme of traversal. The resulting portfolio of traversal schemes can be regarded as a challenging benchmark for setups for typed generic programming. The way we develop the model and the suite of traversal schemes, it becomes clear that parameterised + typed strategic programming is best viewed as a potent combination of certain bits of parametric, intensional, polytypic, and ad-hoc polymorphism.

研究の動機と目的

  • 一様および型固有の走査を両方サポートする包括的で簡潔かつ表現力のある関数的戦略のモデルを構築すること。
  • 走査スキームにおける静的型安全性を損なわず、柔軟性や表現力も維持すること。
  • コンビネータを用いて制御フロー、データフロー、構造的特性の深いパrameter化を可能にすること。
  • 特定の走査スキームにコミットするのを延期することで、オーバーロードを活用し再利用性を高めること。
  • 豊富な走査スキームのポートフォリオを表現することで、型付き汎用プログラミングのベンチマークを提供すること。

提案手法

  • 型に対する2次的な多態性関数として関数的戦略を表現するため、第一級の多態性を用いる。
  • 実行時型照合を型統一関数(TUs)でエンコードし、一様な振る舞いと型固有の振る舞いを混合する。
  • コンストラクタ応用を走査する基本的な fold 組み合わせ子を定義し、すべての走査スキームの基盤とする。
  • 特定の型スキームにコミットしない choice や adhoc のようなコンビネータを用い、異なる走査パターン間での再利用を可能にする。
  • MonadPlus を用いて成功/失敗の意味論を扱うパス制約付き走査スキーム(例:belowlist, abovelist)を設計する。
  • 走査スキームのオーバーロードにより、事前にプロセッサの目的にコミットせず、変換、分析、選択をサポートする。

実験結果

リサーチクエスチョン

  • RQ1パラメトリック、内省的、多型的、およびアドホックな多態性を統合する関数的戦略のモデル化は、どのように可能か?
  • RQ2コンストラクタ応用に対する1つの汎用的な fold 組み合わせ子が、複雑なプリミティブ走査コンビネータの集合を置き換えることができるか?
  • RQ3走査スキームは、データだけでなく、制御フローと走査特性に対してもパrameter化可能か?
  • RQ4オーバーロードは、特定の走査スキームにコミットするのを延期する役割を果たすか?
  • RQ5任意の再帰的データ型に対して柔軟で合成可能な走査を可能にしつつ、静的型安全性をどの程度維持できるか?

主な発見

  • 提案されたモデルにより、プリミティブ走査コンビネータの無限に伸びるリストの必要性が削減され、コンストラクタ応用に対する1つの汎用的な fold に置き換えられた。
  • 戦略の型スキームが1つの型コンストラクタに統合され、choice や adhoc のようなコンビネータが型スキームへのコミットなしに利用可能になった。
  • パス制約付き走査スキーム belowlist は、例示例における盲点を効果的に解消し、深くネストされた SortB 項から正しく 42 を抽出できた。
  • MonadPlus を用いた述語の使用により、パス制約における成功/失敗の簡潔で型安全なエンコードが可能になり、複雑なパス探索論理の実装が可能になった。
  • フレームワークは、コンビネータを介して合成・切り替え可能な豊富な走査スキームのポートフォリオをサポートしており、走査順序と振る舞いに対する細かい制御が可能になった。
  • 型付きでパrameter化された戦略的プログラミングは、パラメトリック、内省的、多型的、およびアドホックな多態性の協調的連携として最も適切に理解されるべきであることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。