为啥我的球拍程序没有给我任何输出?

Posted

技术标签:

【中文标题】为啥我的球拍程序没有给我任何输出?【英文标题】:Why my Racket program does not give me any output?为什么我的球拍程序没有给我任何输出? 【发布时间】:2022-01-11 05:03:17 【问题描述】:

我编写了这段代码来转换测量值。但是,当我使用命令 (fce cm mm 5) 运行它时,我没有看到任何输出和任何错误。

 #lang racket
    (define eq equal?)
    (define (fce jednotka jednotka2 cislo)
    (cond
    ((eq jednotka "mm") (mm cislo jednotka2))
    ((eq jednotka "cm") (cm cislo jednotka2))
    ((eq jednotka "m") (m cislo jednotka2))
    ((eq jednotka "km") (km cislo jednotka2))))
    (define (mm c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (cm c j)
    (cond
    ((eq j "mm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (m c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "mm") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))
    
    (define (km c j)
    (cond
    ((eq j "cm") (format "~a mm = ~a ~a" c (* c 0.1) j))
    ((eq j "m") (format "~a mm = ~a ~a" c (* c 0.001) j))
    ((eq j "km") (format "~a mm = ~a ~a" c (* c 0.000001) j))))

【问题讨论】:

分别测试一些条件,看看会发生什么,例如(eq cm "cm")。并将else 子句添加到您的conds。 【参考方案1】:

您忘记引用字符串,而您正在比较过程。你应该这样做:

(fce "cm" "mm" 5)

不过,逻辑看起来不正确。以上打印:

"5 mm = 0.5 mm"

您需要在每个帮助程序中计算出正确的转换和显示的消息。

【讨论】:

以上是关于为啥我的球拍程序没有给我任何输出?的主要内容,如果未能解决你的问题,请参考以下文章

为啥循环摘要在 gprof 的调用图输出中没有任何调用者?

为啥我的 console.log 没有在这里输出任何东西? [复制]

为啥在我的 OpenGL 引擎中没有从 MyGUI 获得任何屏幕输出?

为啥以下 Hello World 程序在 PowerShell 上没有显示任何输出?相同的程序在 CMD 上显示正确的输出

为啥我没有任何输出?

为啥我的输出文件名为“part-r-xxxxx”,即使我没有提到任何减速器类?