私は抽象データ型を使って以前とは違った式ツリーを評価しています。マップ関数を正確に使う方法がわかりません。 わかりましたので、この機能 int arithmetic_expression::evaluate_Expression(std::map< std::string, int > ipMap)
{
if (tree != NULL){
return(tree->evaluate
私は連想操作>>を持っています。問題は、そのコストが左辺のオペランドのサイズに線形に依存することです。デフォルトでは中置演算子はleft-associativeがあるので、そう表現は、 a >> a >> a >> a >> a >> ... >> a
それはnの面で二次コストを持っているよう>>のnアプリケーションのシーケンスによって形成されます。そのような表現のコストがnの点で線形に保たれ
: data Ne
= NVar Id
| Ne :.. (Clos Term)
| NSplit Ne (Bind (Bind (Clos Term)))
| NCase Ne (Clos [(Label, Term)])
| NForce Ne
| NUnfold Ne (Bind (Clos Term))
deriving