Haskellでストリームフュージョンはどのように機能しますか?

フォードO。

Haskellでストリームフュージョンの対象となる独自のマップ関数を作成できますか?

リストに対する再帰的な反復が融合の対象にならないのはなぜですか?それはHaskellパターンマッチングの素晴らしい表現力を完全に殺します:foo (x:xx) ...

Preludeループ関数は融合されていますか?

クリストフシュラム

Haskellでのストリーム融合は、書き換えルールを使用して行われます(詳細については、ghcのドキュメントを参照してください)これらは、RULESプラグマを使用してコードで指定できるルールです

rewirteルールの基本的な考え方は、コンパイル時にコードを書き換えることができる一連の方法を指定することです。たとえば、独自のバージョンをmapとして定義した場合map'、次のようなことができます。

{-# RULES 
   "map'/map'" forall f g xs. map' f (map' g xs) = map' (f . g) xs
  #-}

これにより、と呼ばれる書き換えルールが導入されmap'/map'ます。このルールが行うfことは、リスト上の関数のすべてのマッピングを書き換え、次にgいくつかのxsマッピングを(f . g)これらのxの単一のマッピングに書き換えることです

書き換えルールの使用には、さらに多くの微妙な点があります。たとえば、コンパイラのどのフェーズでルールを適用するかを指定できますが、コンパイラにはそれらのルールが正しいかどうかを確認する方法がありません。

リライトの結果は引き続きタイプチェックされますが、リライトルールで意味的に正しくないことを行った場合、それは純粋にあなた次第です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アプリケーションストレージはAndroidでどのように機能しますか?

分類Dev

Unity3dビジュアルスクリプトフレームワークは舞台裏でどのように機能しますか?

分類Dev

ジョブキューはpromiseでどのように機能しますか?

分類Dev

ホストボリュームのシンボリックリンクはDockerコンテナでどのように機能しますか?

分類Dev

idrisチュートリアル、11ページ、セクション3.4.4で「そこ」はどのように機能しますか?

分類Dev

Haskellではreturnステートメントはどのように機能しますか?

分類Dev

バージョン管理はAmazonCloudfrontでどのように機能しますか?

分類Dev

プロプライエタリモジュールは、カーネルバージョンの大部分でどのように機能しますか?

分類Dev

スナップショットリスナーはオフラインデータでどのように機能しますか?

分類Dev

LUISでは、フレーズリストの「値は交換可能」オプションはどのように機能しますか?

分類Dev

ROWNUMはページネーションクエリでどのように機能しますか?

分類Dev

Haskellではアキュムレータはどのように機能しますか?

分類Dev

Node.jsストリームはどのように機能しますか?

分類Dev

多段フィードバックキューのスケジューリングはどのように機能しますか?

分類Dev

NEATスペシエーションアルゴリズムはどのように機能しますか?

分類Dev

スキムリンクスコープとは何ですか?どのように機能しますか

分類Dev

スキムリンクスコープとは何ですか?どのように機能しますか

分類Dev

フラジョレマーティンスケッチはどのように機能しますか?

分類Dev

Mesosスケジューリング-これはどのように機能しますか?

分類Dev

「スタートアップアプリケーション」はどのように機能しますか?

分類Dev

「スタートアップアプリケーション」はどのように機能しますか?

分類Dev

AWS DynamoDBDAXマルチリージョンで無効化はどのように機能しますか

分類Dev

ポートリスニングはどのように機能しますか?

分類Dev

I / Oストリームフラグはどのように機能しますか?

分類Dev

バリューイベントは、Firebaseリスナーを使用したアップデートでどのように機能しますか?

分類Dev

ストリーム入力は、cinを使用したC ++でどのように機能しますか?

分類Dev

イベントとイベントオブジェクトはアンプストーリーでどのように機能しますか?AMPのイベントとアクションの完全なリストはありますか?アンプストーリーの完全なリストはありますか?

分類Dev

スクリーンショットはどのように機能しますか?

分類Dev

アプリケーションレビューボードはどのように機能しますか?

Related 関連記事

  1. 1

    アプリケーションストレージはAndroidでどのように機能しますか?

  2. 2

    Unity3dビジュアルスクリプトフレームワークは舞台裏でどのように機能しますか?

  3. 3

    ジョブキューはpromiseでどのように機能しますか?

  4. 4

    ホストボリュームのシンボリックリンクはDockerコンテナでどのように機能しますか?

  5. 5

    idrisチュートリアル、11ページ、セクション3.4.4で「そこ」はどのように機能しますか?

  6. 6

    Haskellではreturnステートメントはどのように機能しますか?

  7. 7

    バージョン管理はAmazonCloudfrontでどのように機能しますか?

  8. 8

    プロプライエタリモジュールは、カーネルバージョンの大部分でどのように機能しますか?

  9. 9

    スナップショットリスナーはオフラインデータでどのように機能しますか?

  10. 10

    LUISでは、フレーズリストの「値は交換可能」オプションはどのように機能しますか?

  11. 11

    ROWNUMはページネーションクエリでどのように機能しますか?

  12. 12

    Haskellではアキュムレータはどのように機能しますか?

  13. 13

    Node.jsストリームはどのように機能しますか?

  14. 14

    多段フィードバックキューのスケジューリングはどのように機能しますか?

  15. 15

    NEATスペシエーションアルゴリズムはどのように機能しますか?

  16. 16

    スキムリンクスコープとは何ですか?どのように機能しますか

  17. 17

    スキムリンクスコープとは何ですか?どのように機能しますか

  18. 18

    フラジョレマーティンスケッチはどのように機能しますか?

  19. 19

    Mesosスケジューリング-これはどのように機能しますか?

  20. 20

    「スタートアップアプリケーション」はどのように機能しますか?

  21. 21

    「スタートアップアプリケーション」はどのように機能しますか?

  22. 22

    AWS DynamoDBDAXマルチリージョンで無効化はどのように機能しますか

  23. 23

    ポートリスニングはどのように機能しますか?

  24. 24

    I / Oストリームフラグはどのように機能しますか?

  25. 25

    バリューイベントは、Firebaseリスナーを使用したアップデートでどのように機能しますか?

  26. 26

    ストリーム入力は、cinを使用したC ++でどのように機能しますか?

  27. 27

    イベントとイベントオブジェクトはアンプストーリーでどのように機能しますか?AMPのイベントとアクションの完全なリストはありますか?アンプストーリーの完全なリストはありますか?

  28. 28

    スクリーンショットはどのように機能しますか?

  29. 29

    アプリケーションレビューボードはどのように機能しますか?

ホットタグ

アーカイブ