小编Ser*_*lla的帖子

Racket中的条件模式匹配

由于指南中的所有示例都带有列表,我发现很难看到如何在Racket中使用模式匹配来编写像OCaml那样的条件匹配,例如:

read ~var_a var_b s = match s.[0] with
    | _ when var_b >= var_a + 4 ->
        (* Do something *)
    | "a" when is_negative var_b -> 
        (* Do something else *)
    ...
Run Code Online (Sandbox Code Playgroud)

我如何在Racket中写出类似的东西?

谢谢.

ocaml functional-programming pattern-matching racket

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

在Racket中生成HTML

在Racket中从X表达式生成HTML的推荐方法是什么?看起来response/xexpr会这样做,但似乎是为服务http响应而设计的.我唯一需要的是从Racket列表(或X表达式)生成HTML字符串,不需要涉及Web服务器.

html racket

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

RxJS中的同步性

我希望以下代码将异步运行:

var range = Rx.Observable.range(0, 3000000);

range.subscribe(
  function(x) {},
  function(err) {},
  function() {
    console.log('Completed');
});

console.log('Hello World');
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.需要一段时间才能完成大范围的数字,只有当它完成后才能恢复执行,你可以在这里尝试代码.

我很困惑何时期望RxJS同步或异步地运行.它取决于使用的方法吗?我之前的想法是,一旦我们进入Observables/Observer土地,其中的所有内容都是异步运行的,类似于承诺的工作方式.

javascript asynchronous system.reactive reactive-extensions-js rxjs

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

OCaml的Sqlite绑定

我一直在寻找OCaml的SQLite绑定.我偶然发现了ocaml-sqlite3,它看起来很好而且最新,但没有任何关于如何使用它的文档.

2004年已经停止使用过时的ocaml-sqlite绑定的一些非常旧的文档(仅限API参考).但它看起来并不是最新的,可能已经与我找到的更新版本完全不同(在上面的链接中列出) ).

我只是想知道是否有人提供了一些文档,示例或线索,了解这些库的工作原理.我可以通过代码,但我想保留该选项作为最后一个资源.

sqlite ocaml

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

有没有办法在Webkit浏览器中覆盖最小字体大小?

我正在画布实例上渲染微小的文本,并且可以在Firefox 4上正常工作,但是在Chrome和Safari上,字体渲染使用的是这些浏览器中设置的最小字体大小,该大小已达到最小值,因此无法通过UI(看起来像6px的字体大小),但对于我要完成的任务来说仍然太大。

我使用的打印字体的代码与以下类似,以防可能有用:

ctx.font = '4px Monospace';
ctx.fillText("Any text", 0, 10);
Run Code Online (Sandbox Code Playgroud)

因此,是否有可能完全覆盖最小字体大小设置?

更新:我知道一个4px的文本不可读,但这不是问题的重点。事实上,我根本不需要它可读。

更新2:在Safari上可以使用此解决方案,但在Chrome中仍然无法使用。

谢谢。

javascript fonts webkit canvas font-size

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

寻找一种优雅的解析整数的方法

现在我正在执行以下操作以解析字符串中的整数,然后将其转换为int类型:

tmpValue, _ := strconv.ParseInt(str, 10, 64) //returns int64
finalValue = int(tmpValue)
Run Code Online (Sandbox Code Playgroud)

它非常冗长,并且绝对不是很漂亮,因为我还没有找到一种方法来在ParseInt电话中进行转换.有没有更好的方法呢?

go

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

在React中将图像嵌入SVG中

我在React中使用SVG,但是ReactJS允许的SVG标签数量 有限,我没有看到<image/>在我的JSX中嵌入SVG标签的方法.

我也尝试将一组fill样式rect用于图像的网址,但它也不起作用.这有解决方法吗?

svg image reactjs

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

是否真的使用了ocaml中的流?

看看不同的ocaml项目,我没有看到使用过的语言中的内置Streams.即使在最近的Real World Ocaml书中,也没有提到Streams,这很奇怪.

这是什么原因?是因为Lwt或Core取代了它们吗?

ocaml stream ocaml-lwt

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

Chicken Scheme中的命名空间

命名空间如何在Chicken Scheme中起作用?我现在正在使用parleyegg,当我定义一个具有名称的函数时read,由于名称冲突而导致错误(实际上,因为我read覆盖了parley自己read,并且它被调用了错误的类型.

这是代码:

(use parley)

(define (read p) p) ; This `read` function conflicts.

(let loop ((l (parley "> ")))
  (if (or (eof-object? l)
          (equal? l "quit"))
    (print "bye!")
    (begin
      (printf "you typed: ~s~%" l)
      (loop (parley "> ")))))
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免像这样的碰撞?

UPDATE

我已经减少了重现这个的必要代码:

(use parley)
(define (read p) p)
Run Code Online (Sandbox Code Playgroud)

这会收到以下错误: Error: illegal non-atomic object: #<input port "readline.scm">

显然,我的read功能正在发生冲突parley read.但我不知道如何在不重命名我的功能的情况下避免这种情况.

scheme namespaces chicken-scheme

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

获取clojurescript REPL的最简单方法

什么是在终端中启动和运行clojurescript REPL的最快方法?我不需要连接到浏览器,只需要REPL来评估表达式.

文档似乎假设您希望浏览器同步或提供复杂的杂技以获得简单的REPL.

read-eval-print-loop clojurescript

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