[解決済み】Schemeの "引数に適用可能な手続きを期待"
2022-01-27 18:35:13
質問
DrRacketを使用しています。このコードで問題があります。
(define (qweqwe n) (
(cond
[(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f]
)
)
)
(define ( RTY file1 file2 )
(define out (open-output-file file2 #:mode 'text #:exists 'replace))
(define in (open-input-file file1))
(define (printtofile q) (begin
(write q out)
(display '#\newline out)
))
(define (next)
(define n (read in))
(cond
[(equal? n eof) #t]
[else (begin
((if (qweqwe n) (printtofile n) #f))
) (next)]
)
)
(next)
(close-input-port in)
(close-output-port out))
しかし、私は(RTY "in.txt" "out.txt" )を開始すると、私は((もし(qweqwe n)(printtofile n)#f)) でエラーになります。
application: not a procedure;
expected a procedure that can be applied to arguments
given: #f
arguments...: [none]
何が問題なのか?
ADDです。 というコードに変更しました。
(cond
[(equal? n eof) #t]
[else
(if (qweqwe n) (printtofile n) #f)
(next)]
)
しかし、問題は残ります。
どうすればいい?
不要な括弧がありますが、これはやめてください。
((if (qweqwe n) (printtofile n) #f))
代わりにこれを試してみてください。
(if (qweqwe n) (printtofile n) #f)
また、この中に
(define (qweqwe n)
((cond [(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f])))
であるべきだ。
(define (qweqwe n)
(cond [(< n 10) #t]
[(>= (lastnum n) (pochtilastnum n)) (qweqwe (quotient n 10))]
[else #f]))
どちらの場合も、問題なのは、もしあなたが
()
を表現しようとすると、それは
呼び出す
プロシージャを使用します。そして、その結果を考えると
if
と
cond
がプロシージャを返さない場合、エラーが発生します。また、両方の
begin
は不要です。
cond
は暗黙のうちに
begin
は、各条件の後で、プロシージャの定義の本文でも同じです。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン