我是一名C#程序员,正在学习Scheme,但由于不了解Scheme,我遇到了很多麻烦。
我已经在很多帮助下编写了这段代码:
found = False
for z in range(amount):
temp2=input2[1][:-3] #for this case lets say the value is 8
temp=k[z] #array of numbers
if temp.startswith(temp2,0,1)==True:#this is the conditioning statment
#this is the output for the condition no bother
stdout.write(f'{crn[z]} {sub[z]} {cn[z]} {sec[z]}'+" ")
stdout.write(f'{days[z]} {bt[z]} {et[z]} {inst[z]}\n')
found = True
if not found:
print('NO MATCHES FOUND')
但是出现以下错误:
定义:在表达式上下文中不允许使用:(定义排序 (按秒升序排序)
在这一行:
#lang racket
(define sort-asc-by-second
(lambda (lst)
(sort lst
(lambda (x y) (< (cdr x) (cdr y))))))
(define sum
(lambda (lst)
(apply + (map cdr lst))
)
)
(define my-function
(lambda (lst)
(
(define sorted (sort-asc-by-second lst))
(define suma (sum lst))
(define lista (map (lambda (p) (cons (car p) (/ (cdr p) suma)))))
))
)
如何声明变量?也许,这里的问题是我是C#程序员,但我不了解Scheme。
答案 0 :(得分:2)
我不知道该程序要做什么,但是您看到的当前错误是由于有一对多余的括号引起的。
(define my-function
(lambda (lst)
(define sorted (sort-asc-by-second lst))
(define suma (sum lst))
(define lista (map (lambda (p) (cons (car p) (/ (cdr p) suma)))))
)
)
答案 1 :(得分:2)
我认为遵循Design Recipe的步骤对您来说非常重要。在这种情况下:
以不同的方式放置(也许更直率地):停止游荡。开始设计!