Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Haskell から C++ への変換時のロスをなくす #177

Closed
kmyk opened this issue Aug 12, 2021 · 2 comments · Fixed by #168
Closed

Haskell から C++ への変換時のロスをなくす #177

kmyk opened this issue Aug 12, 2021 · 2 comments · Fixed by #168

Comments

@kmyk
Copy link
Collaborator

kmyk commented Aug 12, 2021

Description / 説明

core 言語 / Haskell は純粋関数型プログラミング言語になっていて、C++ は通常の命令型言語です。
これらの間の相互変換の際に計算量が上がってしまうことがあるので、これをなんとかしたい。

Motivation / 動機

これのせいでバグりまくり計算量上がりまくりなので……

  • Haskell でも C++ でも同じものに対する同じようなコードならたいした差はないので、完全にロスなく相互変換できるはず。少なくとも私が手動でならできる。自分がこれをどのようにやってるのかをちゃんと理解してコードに落とす必要がある

  • 最初からすべて C++ でもよかった気もするが、それはそれで面倒のはず。Haskell を経由すべきという私の最初の直観は正しかったと信じたい。でもすべてを C++ でやる路線も気になるので誰か試してみてほしいな

  • 関連 copy を move に直す際にやりすぎてる #154

@kmyk
Copy link
Collaborator Author

kmyk commented Aug 12, 2021

実装の選択肢:

  1. 気合でこのまま進める
  2. core 言語を制限して、C++ に変換しやすいようなプログラムしか許さないようにする
  3. core 言語を拡張して、C++ に変換しやすいプログラムを書けるようにする
    • つまり core 言語を C++ に近づける。ref cell や monad などの副作用を扱えるなにかを取り入れて、部分的に命令型プログラミングできるようにする

(1.) はきびしい。#154 (comment) みたいに配列参照が入ってきたときにきれいに扱える気がしない。
(2.) は理想的だが難しい。配列の参照は線形型でも困難な課題。
(3.) は他よりは現実的だが汚い。プログラムの範囲を広げただけでは変換できないプログラムが消えるわけではない。

@kmyk
Copy link
Collaborator Author

kmyk commented Aug 13, 2021

できちゃった。方針 (1.) です

@kmyk kmyk linked a pull request Aug 13, 2021 that will close this issue
@kmyk kmyk closed this as completed in #168 Aug 13, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant