在SML

问题描述

下面的函数 1) 中的表达式 'f 7' 的含义不清楚。除非我使用函数 3) ,该函数始终评估为 false ,否则它将始终解析为 true 。也就是说,当我通过它时,函数 2) 和函数 2) 应该解析为 false ,即,当x fn x => 3 x *-执行失败。我认为可能有些明显的东西我很想念...任何提示将不胜感激。

1)

fun double_or_triple f = 
    if f 7
    then fn x => 2*x
    else fn x => 3*x
fun st x = if x > 0 then true else false
fun always_false (x:int) = false;

附录: 将@Simon Shine的方法与功能 2) 一起使用,可以非常清楚地了解发生了什么:

double_or_triple st 6
-> (if st 7 then fn x => 2 * x else fn x => 3 * x) 6    
-> (if (if (7 > 0) then true else false) then fn x => 2 * x else fn x => 3 * x) 6   
-> (if (if true then true else false) then fn x => 2 * x else fn x => 3 * x) 6  
-> (if true then fn x => 2 * x else fn x => 3 * x) 6    
-> (fn x => 2 * x) 6    
-> 2*6  
-> 12

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)