小编rom*_*run的帖子

函数式编程:不可变的数据结构效率

我不明白,FP编译器如何使代码快速处理不可变数据结构,而不是炸毁堆栈等.

例如,在树中插入操作,它必须在添加新节点之前复制整个树并返回复制的树,而不是仅需要添加指向新节点的命令式couterpart.如果插入操作运行数百万次,则需要占用大量内存,并且当树更大时,复制将越来越慢.FP编译器如何实际优化这个?

functional-programming

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

ocaml顶层模块加载

我正在尝试将.cmo中的模块加载到顶层,我尝试过:

$ ocaml mymodule.cmo
Run Code Online (Sandbox Code Playgroud)

我得到了顶级提示,但我无法参考Mymodule

我也试过了

#load "mymodule.cmo"
Run Code Online (Sandbox Code Playgroud)

它没有抱怨,但仍然不能参考Mymodule

我也试过了

#use "mymodule.ml"
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但它没有将代码加载到Mymodule命名空间,这是一个问题,因为我实际上想要将一些模块加载到顶层,并且它们通过模块命名空间相互引用.

ocaml load

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

如何从ocaml中的列表中获取子列表

我正在查看List文档.似乎图书馆没有提供sublist功能.

我正在尝试从ij获取元素列表.现在我必须把它写成:

let rec sublist list i j =
  if i > j then
    []
  else
    (List.nth list i) :: (sublist list (i+1) j)
Run Code Online (Sandbox Code Playgroud)

这是非常简洁的,但我质疑效率List.nth,因为如果它是O(n),我宁愿以不那么简洁的方式写它.

我想知道他们为什么不提供List.sublistfunc,如果List.nth不是O(1),因为它是如此常见的操作..

ocaml list

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

如何隐藏/显示谷歌关闭中的dom元素

domA.style.display ="none"; domA.style.display ="block;

我在图书馆找不到这样的功能,但我猜他们必须在某个地方找到它.

google-closure google-closure-library

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

ocaml%同一性函数

我想知道为什么我们需要像"%identity"这样的函数,这与让a = a相同.是否会通过使用它来提高性能?

我在我的程序中引入幻像输入,调用身份函数很多次来转换类型,好奇如果"%identity"可以减少一点开销.

ocaml types external

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

F#图库(ocamlgraph like)

我正在使用ocamlgraph在ocaml中编写一个程序,并想知道我是否要将它移植到F#我的选择是什么?谢谢.

f# ocaml

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

多种参数类型

我想写这样的东西:

type 'a 'b xxx = {aaa: 'a: bbb: 'b: ccc: int};;

它不编译.它只是语法错误,还是它们不允许类型上有多个参数?那么为什么 ?

ocaml

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

如何检查是否使用相同的构造函数创建了两个值?

让我说我有

type t = A of int | B of int

let xx = A(2);;
let yy = A(3);;
Run Code Online (Sandbox Code Playgroud)

我想测试xx和yy的构造函数是否相等,有没有一种简单的方法可以做到这一点?而不是必须

match xx with
  A _ ->
  (match yy with A _ -> true | B _ -> false)
| B _ -> 
  (match yy with A _ -> false | B _ -> true);;
Run Code Online (Sandbox Code Playgroud)

当一个类型上有许多构造函数时会变得非常混乱

ocaml

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

ocaml记录类型和null

我正在尝试定义类型:

键入aaa = NULL | {a:int; b:int} ;;

但编译器不允许这样做.我不确定为什么我们不能将记录类型与其他任何东西混合.

我需要匹配一个值,如果它是记录类型或空记录,我厌倦了创建虚拟记录,如{a = -999; b = -999}.

有没有更好的办法 ?

ocaml types record

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

m2e阴影蚀"项目主要工件不存在"

我正在尝试创建一个部署包,它将我的maven模块的所有依赖项捆绑到eclipse中的另一个maven项目.

我在我的pom.xml中有这个

<modelVersion>4.0.0</modelVersion>
<groupId>com.my.proj</groupId>
<artifactId>AAA</artifactId>
<version>0.0.2-SNAPSHOT</version>
<name>btc</name>
<dependencies>
    <dependency>
        <groupId>com.another.proj</groupId>
        <artifactId>BBB</artifactId>
        <version>1.4-SNAPSHOT</version>
    </dependency>
</dependencies>

<build>
    <plugins>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <transformers>
                            <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.group.id.Launcher1</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

我在eclipse中使用"m2 Maven Build",其目标是"org.apache.maven.plugins:maven-shade-plugin:shade"和"Resolve Workspace artifacts".

它失败了

--- maven-shade-plugin:1.6:shade (default-cli) @ AAA ---
[ERROR] The project main artifact does not exist. This could have the following
[ERROR] reasons:
[ERROR] - You have invoked the goal directly from the command line. This is …
Run Code Online (Sandbox Code Playgroud)

eclipse maven-2 m2e maven-shade-plugin

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