首页 > 解决方案 > 如何在sml中将函数的参数从int转换为real?

问题描述

这是我在 sml 中编写的用于计算谐波和的代码。我基本上想计算实数,因为整数都将评估为 0(没有任何用处)。但是这段代码给出了错误。

试验一:

  if y<x then 0
  else f(x,y-1)+ 1/y;

错误:

Elaboration failed: Type clash. Functions of type "real * real → real" cannot take an argument of type "int * int": Cannot merge "int" and "real".

试验二:

  if y<x then 0
  else f(real(x),y-1)+ 1/y;

错误:

Elaboration failed: "real" is not a constructor.

即使用 0.0 替换 0 也没有用。请帮忙。

标签: sml

解决方案


我得到了我的问题的答案。我们基本上需要使用

 if y<x then 0.0
  else f(x,y-1)+ 1.0/real(y);

因为我们函数的类型是 (int*int)->real


推荐阅读