小编Yas*_*aev的帖子

Erlang:简单的重构

考虑一下代码:

f(command1, UserId) ->
    case is_registered(UserId) of
        true ->
            %% do command1
            ok;
        false ->
            not_registered
    end;

f(command2, UserId) ->
    case is_registered(UserId) of
        true ->
            %% do command2
            ok;
        false ->
            not_registered
    end.

is_registered(UserId) ->
    %% some checks
Run Code Online (Sandbox Code Playgroud)

现在假设有很多命令,它们最初都是调用is_registered.有没有办法概括这种行为(重构此代码)?我的意思是在所有命令中放置相同的案例并不是一个好主意.

erlang refactoring functional-programming

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

文件I/O操作 - 方案

有人能指出我在Scheme中的基本文件I/O操作示例吗?

我只想尝试对文件进行基本的读/写/更新操作.

发现很难,因为没有适当的资源可供学习.

io scheme racket

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

Erlang:使用方法和字段定义某类对象

如何在Erlang中使用方法等定义一些类(或类型)对象(如整数比较)?

例如,我怎样才能这样做:

qsort([Pivot|T]) ->
    qsort([X || X <- T, X =< Pivot])
    ++ [Pivot] ++
    qsort([X || X <- T, X > Pivot]).
Run Code Online (Sandbox Code Playgroud)

如果我想排序某些对象的列表,例如人.

erlang

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

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

方案中的方法和属性:方案中是否可以进行OOP?

我将用一个简单的例子来说明我的问题.在Java,C或任何其他OOP语言中,我可以pie用类似于此的方式创建一个类:

class Apple{
    public String flavor;
    public int pieces;
    private int tastiness;
    public goodness(){
        return tastiness*pieces;
    }
}
Run Code Online (Sandbox Code Playgroud)

使用Scheme的最佳方法是什么?我想我可以做这样的事情:

(define make-pie
  (lambda (flavor pieces tastiness)
    (list flavor pieces tastiness)))

(define pie-goodness
  (lambda (pie)
    (* (list-ref pie 1) (list-ref pie 2))))

(pie-goodness (make-pie 'cherry 2 5))

;output: 10
Run Code Online (Sandbox Code Playgroud)

...樱桃是味道,2是碎片,5是味道.然而,没有类型安全或可见性,所有东西都只是在一个未标记的列表中.我怎样才能改善这一点?

旁注:make-pie程序需要3个参数.如果我想让它们中的一些是可选的(就像我能够使用像Java或C这样的大括号语言),那么将参数作为一个列表(将参数视为列表)是一种好习惯-并不需要一个参数,它一个列表)和处理他们的方式?


更新:

我收到了几个答案,链接到各种扩展/库,可以满足我对计划中OOP的渴望.这很有帮助,谢谢.

然而,虽然我可能没有很好地传达它,但我也想知道在pie没有这些类或库的情况下实现上述对象的最佳方法是什么,因此我可以更好地理解方案最佳实践.

oop scheme racket

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

J的独特功能有哪些?

我来自C,Fortran,Python,R,Matlab和一些Lisp的背景 - 我在Haskell上读过一些东西.JL或APL家族其他语言中有哪些简洁的想法/例子是独特的,而不是用更常见的语言实现的?我总是有兴趣找出我所缺少的东西......

j apl tacit-programming

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

Erlang打印2列表

我有2个清单:

 List1 = [1,2,3].
 List2 = ["asd", "sda", "dsa"].
Run Code Online (Sandbox Code Playgroud)

如何在下面的回合中打印此列表:

1 asd 2 sda 3 dsa

谢谢.

erlang functional-programming list

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

匹配语言功能?

我正在自学斯卡拉,我有一个哲学问题.模式匹配Scala 的语言功能,还是只是库功能?换句话说,除了名字之外,我是否能够充分熟练地编写xmatch一个与match各方面相同的功能?实际上,我认为这些是两个略有不同的问题:匹配库功能,它可能是一个库功能吗?

我正在考虑重新编写匹配,纯粹是作为练习,但我想要一些保证它是可能的.

scala pattern-matching

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

将其他文件添加到haskell

我在haskell中编写应用程序,我想将一些函数和数据类型导出到其他文件,然后能够在我的主文件中使用它们.

这该怎么做 ?

感谢帮助

haskell functional-programming

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

方案/记忆中的数组

如何在Scheme中使用数组?

特别是,我正在尝试使用memoization实现递归的fibonacci过程.Scheme中是否存在数组?

如果没有,我该如何实现memoization?

scheme memoization dynamic-programming racket

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