小编dyo*_*yoo的帖子

方案控制台打印

刚开始使用Scheme.我在控制台上打印有问题.一个简单的列表打印示例:

 (define factorial
   (lambda (n)
     (cond 
       ((= 0 n) 1)
       (#t (* n (factorial (- n 1)))))))
Run Code Online (Sandbox Code Playgroud)

我想在n每次调用函数时打印.我想我不能在同一个功能中做到这一点?我是否需要调用另一个功能才能打印?

printing scheme

18
推荐指数
1
解决办法
4万
查看次数

循环如何在计划中运作?

我在理解循环如何在方案中工作时遇到一些困难.特别是这个代码运行但我不知道为什么

 (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 …

scheme for-loop racket

5
推荐指数
2
解决办法
8908
查看次数

使用名称空间来处理带阴影的标识符

我正在使用Racket(家庭作业)进行简单的游戏.这些要求指示我创建一个名为random的计算机播放器,它使用默认的随机数生成器.这段代码说明了我的问题:

(define (random)
  (random (10))) ; should be random number call
Run Code Online (Sandbox Code Playgroud)

我已经习惯了命名空间的C约定:

std::string

Racket是否提供这些方面的任何内容?谢谢

random scheme namespaces racket

4
推荐指数
1
解决办法
195
查看次数

分两个阶段停止和复制垃圾收集器

当实现一个停止和复制垃圾收集器作为一对时,我需要两个存储库(旧的和新的一个).一个存储库由汽车和磁带组成.所以基本上当我创建一个新的地址时,它是指向汽车和-cdrs的指针.

分配新内存时,我发现我没有足够的空间,我启动了一个GC.这个人做的是:

  • 切换存储库
  • 移动:从旧银行读取汽车和cdr,复制到新银行并将旧指针中的指针放到新的银行中以供日后使用.
  • scan:遍历内存并复制从旧到新的所有内容.

现在的问题是:为什么我需要先扫描然后再移动.为什么我不能一起做这两件事?

garbage-collection racket

4
推荐指数
1
解决办法
1045
查看次数

在Geiser杀死球拍无限循环

当我通过使用geiser + racket评估emacs中的表单而意外地进行无限循环时,等待一分钟后,最终emacs将再次开始响应.不幸的是,之后的每个评估至少需要一分钟.通常,在第二个或第三个eval之后,emacs将完全停止响应,并且最快要做的就是重新启动Ubuntu机器.

是否有一些设置可以在geiser中阻止这种情况,或者告诉emacs杀死geiser?

emacs racket geiser

2
推荐指数
2
解决办法
602
查看次数

Json Decode无法将json中的时间戳解析为Go结构

我试图获取一个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)

json struct go

2
推荐指数
1
解决办法
1790
查看次数

更快的方案功能?

因此,查找列表中的最大元素需要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

1
推荐指数
1
解决办法
282
查看次数

无法在javascript中比较两个字符串

我正在尝试两个比较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)

任何人都可以告诉我问题在哪里吗?谢谢.

html javascript string compare

0
推荐指数
1
解决办法
4726
查看次数