刚开始使用Scheme.我在控制台上打印有问题.一个简单的列表打印示例:
(define factorial
(lambda (n)
(cond
((= 0 n) 1)
(#t (* n (factorial (- n 1)))))))
Run Code Online (Sandbox Code Playgroud)
我想在n每次调用函数时打印.我想我不能在同一个功能中做到这一点?我是否需要调用另一个功能才能打印?
我在理解循环如何在方案中工作时遇到一些困难.特别是这个代码运行但我不知道为什么
(define (bubblesort alist)
;; this is straightforward
(define (swap-pass alist)
(if (eq? (length alist) 1)
alist
(let ((fst (car alist)) (scnd (cadr alist)) (rest (cddr alist)))
(if (> fst scnd)
(cons scnd (swap-pass (cons fst rest)))
(cons fst (swap-pass (cons scnd rest)))))))
; this is mysterious--what does the 'for' in the next line do?
(let for ((times (length alist))
(val alist))
(if (> times 1)
(for (- times 1) (swap-pass val))
(swap-pass val))))
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚(let for ((应该在这里做什么,而for …
我正在使用Racket(家庭作业)进行简单的游戏.这些要求指示我创建一个名为random的计算机播放器,它使用默认的随机数生成器.这段代码说明了我的问题:
(define (random)
(random (10))) ; should be random number call
Run Code Online (Sandbox Code Playgroud)
我已经习惯了命名空间的C约定:
std::string
Racket是否提供这些方面的任何内容?谢谢
当实现一个停止和复制垃圾收集器作为一对时,我需要两个存储库(旧的和新的一个).一个存储库由汽车和磁带组成.所以基本上当我创建一个新的地址时,它是指向汽车和-cdrs的指针.
分配新内存时,我发现我没有足够的空间,我启动了一个GC.这个人做的是:
现在的问题是:为什么我需要先扫描然后再移动.为什么我不能一起做这两件事?
当我通过使用geiser + racket评估emacs中的表单而意外地进行无限循环时,等待一分钟后,最终emacs将再次开始响应.不幸的是,之后的每个评估至少需要一分钟.通常,在第二个或第三个eval之后,emacs将完全停止响应,并且最快要做的就是重新启动Ubuntu机器.
是否有一些设置可以在geiser中阻止这种情况,或者告诉emacs杀死geiser?
我试图获取一个HTTP请求主体,它是一个json对象,并将其解码为我已定义的Go结构.
结构的两个字段是time.Time类型.虽然只有一个这样的类型字段,但一切正常.
如果我time.Time在go结构中有多个类型字段,我无法解码它并得到错误:
2014/11/01 01:07:04 parsing time "null" as ""2006-01-02T15:04:05Z07:00"": cannot parse "null" as """
问题出在解码线上.尽管我的调试努力,我本可以取得有意义的结果.这个问题似乎很奇怪,实际上不应该这样.
我在这里错过了什么?
func register(w http.ResponseWriter, r *http.Request){
//Read Request Body JSON Into Go Types
var requestBody = []byte(`{"username":"qwewwwqweqwe","password":"can","usertype":"student","firstname":"",??"midname":null,"surname":null,"signuptimestamp":null,"userstatus":null,"phone":nu??ll,"email":null,"address":null,"city":null,"country":null,"language":null,"lastlo??gintimestamp":null}`)
type RegisterStructure struct {
Id int `json:"id"`
Timestamp time.Time `json:"timestamp,omitemty"`
SignupTimestamp time.Time `json:"signuptimestamp,omitempty"`
Username string `json:"username"`
Password string `json:"password"`
UserType string `json:"usertype"`
FirstName string `json:"firstname"`
Midname string `json:"midname"`
Surname string `json:"surname"`
UserStatus string `json:"userstatus"`
Phone string `json:"phone"`
Email string `json:"email"`
Address string `json:"address"` …Run Code Online (Sandbox Code Playgroud) 因此,查找列表中的最大元素需要O(n)时间复杂度(如果列表具有n个元素).我试图实现一个看起来更快的算法.
(define (clever-max lst)
(define (odd-half a-list)
(cond ((null? a-list) (list))
((null? (cdr a-list))
(cons (car a-list) (list)))
(else
(cons (car a-list)
(odd-half (cdr (cdr a-list)))))))
(define (even-half a-list)
(if (null? a-list)
(list)
(odd-half (cdr a-list))))
(cond ((null? lst) (error "no elements in list!"))
((null? (cdr lst)) (car lst))
(else
(let ((l1 (even-half lst))
(l2 (odd-half lst)))
(max (clever-max l1) (clever-max l2))))))
Run Code Online (Sandbox Code Playgroud)
这实际上更快吗?!你会说渐近时间复杂度是什么(紧束缚)?
complexity-theory scheme time-complexity asymptotic-complexity racket
我正在尝试两个比较JavaScript中的两个字符串.但我想比较时有一些问题.它没有显示结果.
if(ajaxRequest.readyState == 4){
var msg = ajaxRequest.responseText;
var fld = document.getElementById("prtCnt");
if(msg == "false") {
var msg = "This User Name is already taken !!!!";
fld.className = "bp_invalid";
// fld.style.color=green;
fld.innerHTML=msg;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我问题在哪里吗?谢谢.