racket - 在模块中创建多项式函数-未绑定标识符
问题描述
在我的测试中,我被要求编写一个函数 createPolynomial,它以数字 0、...、-1 的列表作为参数,并返回一个函数作为输出。返回的函数接受一个数字 0 并返回多项式 0 ⋅ 0 +⋯ + −1 ⋅ −1 在 0 处的值。为此,我使用了内置的 pl expt 函数,取两个数字和 ,并返回 ^
我得到了一个部分代码,我将在下面发布我的答案,并想在家测试我的答案,但我无法让它运行,尽管我的老师将我的答案标记为正确。任何帮助,将不胜感激
这是部分代码:
(: createPolynomial : (Listof Number) -> <-fill in->)
(define (createPolynomial coeffs)
(: poly : (Listof Number) Number Integer Number ->
Number)
(define (poly argsL x power accum)
(if <-fill in->
<-fill in->
<-fill in-> )
(: polyX : Number -> Number)
(define (polyX x)
fill in)
fill in)
And here is my answer:
(: createPolynomial : (Listof Number) -> (Number -> Number))
(define (createPolynomial coeffs)
(: poly : (Listof Number) Number Integer Number ->
Number)
(define (poly argsL x power accum)
(if (null? argsL)
accum
(poly (rest argsL) x (+ power 1) (+ accum (* (first argsL) (expt x power))))))
(: polyX : Number -> Number)
(define (polyX x)
(poly coeffs x 0 0))
(polyX x))
and here are some test for the code:
> (createPolynomial '(1 2 4 2))
- : (Number -> Number)
#<procedure:polyX>
(define p2345 (createPolynomial '(2 3 4 5)))
(test (p2345 0) =>
(+ (* 2 (expt 0 0)) (* 3 (expt 0 1)) (* 4 (expt 0 2)) (* 5
(expt 0 3))))
(test (p2345 4) =>
(+ (* 2 (expt 4 0)) (* 3 (expt 4 1)) (* 4 (expt 4 2)) (* 5
(expt 4 3))))
(test (p2345 11) => (+ (* 2 (expt 11 0)) (* 3 (expt 11 1)) (* 4
(expt 11 2)) (* 5 (expt 11 3))))
(define p536 (createPolynomial '(5 3 6)))
(test (p536 11) => (+ (* 5 (expt 11 0)) (* 3 (expt 11 1)) (* 6
(expt 11 2))))
(define p_0 (createPolynomial '()))
(test (p_0 4) => 0)
我得到的错误是:
x: unbound identifier in module in: x
我猜它必须对括号做些什么,但我不知道什么和在哪里......
解决方案
createPolynomial
是一个返回类型函数的函数(Number -> Number)
- 它是curried。您正在返回真正未绑定的应用程序。 通过将其包装在 lambda 中将其转换为函数:(polyX x)
x
(λ (x) (polyX x))
... 5 次测试通过。
推荐阅读
- python - 无法让python加载json文件
- openssl - RSA_generate_key_ex 函数调用中的 RSA 密钥生成错误
- wordpress - 如何禁用
在wordpress中没有禁用标签的标签 - haskell - 对于具有嵌套 Maybe 值的 Tree 数据类型,Traversable 实例应该是什么样子?
- reactjs - 输入标签不在选择下拉框的中心
- excel - 同一范围内的最后 2 行
- python - 解决问题 - 编码面试问题?
- sql - 如何查询表中的传递匹配?
- c# - 如何在异步数据库连接期间避免“访问冲突”?
- linux - 从数据文件的每一行中提取 2 个字段并插入到外部程序中