Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多项式作为函数SML 如果将多项式表示为函数:类型p= int *(int -int),其中第一个int是多项式的阶数,(int -int)是一个函数,它取并索引并返回系数。_Sml_Ml - Fatal编程技术网

多项式作为函数SML 如果将多项式表示为函数:类型p= int *(int -int),其中第一个int是多项式的阶数,(int -int)是一个函数,它取并索引并返回系数。

多项式作为函数SML 如果将多项式表示为函数:类型p= int *(int -int),其中第一个int是多项式的阶数,(int -int)是一个函数,它取并索引并返回系数。,sml,ml,Sml,Ml,我应该写一个函数,给出一个列表,它会给我一个这种类型的多项式 例如,表单([1])给出(0,fn 0=>1)) 但问题是当你写这样的东西时 形式([1,5])给出(1,fn 0=>1 | 1=>5)) 我对fn 0=>1 | 1=>5部分感到非常困惑,因为fn不是递归的。我可以从列表的长度中找到多边形的顺序,我可以使用x::l访问该列表中的每个元素,但是如何使用元素的每次访问构建此函数(fn 0=>1 | 1=>5)。我不想要一个明确的答案,但我需要帮助 使用列表结构中的方法,这可以通过制作笛卡

我应该写一个函数,给出一个列表,它会给我一个这种类型的多项式 例如,表单([1])给出(0,fn 0=>1)) 但问题是当你写这样的东西时

形式([1,5])给出(1,fn 0=>1 | 1=>5))


我对fn 0=>1 | 1=>5部分感到非常困惑,因为fn不是递归的。我可以从列表的长度中找到多边形的顺序,我可以使用x::l访问该列表中的每个元素,但是如何使用元素的每次访问构建此函数(fn 0=>1 | 1=>5)。我不想要一个明确的答案,但我需要帮助

使用
列表
结构中的方法,这可以通过制作笛卡尔函数
列表的通用版本来实现。n

fun form nil = raise Empty
  | form xs  = (List.length xs - 1, fn i => List.nth (xs, i))
如果您想自己使用nth的功能实现一个函数,它可能如下所示:

fun form xs = 
  let
    fun nth nil     _ = raise Subscript
      | nth (y::_)  0 = y
      | nth (_::yr) i = nth yr (i - 1)
  in
    (List.length xs - 1, nth xs)
  end

这样考虑:当调用方要求多项式的第n个系数时,它对应于列表的第n个元素,该元素是函数的参数。这能说明问题吗?是的!但是递归如何构建我的输出函数呢?我试过这样的方法,但后来我完全被卡住了:from(x::l)=(length(x::l),fnx=>x+4 |----------)我如何构建输出函数的其余部分?这是一个需要递归的练习吗?不一定。这正是我对任务的看法,我应该使用递归遍历列表中的每个元素。可能是我的想法不对。如果我认为你的方法不对,请纠正我。基本上,你试图生成
List.nth
,只是一个通用版本,以便调用者只需要提供索引。您可以像这样编写递归抽象:
valrecf=fni=>f(i-1)