小编tit*_*coy的帖子

Lisp在现实世界中

我已经尝试过Lisp(实际上是Scheme)并发现它是一种非常漂亮的语言,我有兴趣学习更多.但是,似乎Lisp从未在严肃的项目中使用过,而且我没有看到它被列为任何职位发布所需的技能.我有兴趣听到任何使用过Lisp或者在"现实世界"中使用它的人,或者谁知道它是否被认为是纯粹的学术语言.

lisp scheme clojure common-lisp

144
推荐指数
25
解决办法
3万
查看次数

foldl与具有无限列表的foldr行为

此问题中 myAny函数的代码使用foldr.当谓词满足时,它会停止处理无限列表.

我用foldl重写了它:

myAny :: (a -> Bool) -> [a] -> Bool
myAny p list = foldl step False list
   where
      step acc item = p item || acc
Run Code Online (Sandbox Code Playgroud)

(请注意,步骤函数的参数已正确反转.)

但是,它不再停止处理无限列表.

我试图在Apocalisp的答案中跟踪函数的执行情况:

myAny even [1..]
foldl step False [1..]
step (foldl step False [2..]) 1
even 1 || (foldl step False [2..])
False  || (foldl step False [2..])
foldl step False [2..]
step (foldl step False [3..]) 2
even 2 || (foldl step False [3..])
True   || (foldl …
Run Code Online (Sandbox Code Playgroud)

haskell combinators lazy-evaluation fold

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

带有空格的左边打印页面

使用printf时,如何在左侧填充带空格的字符串?

例如,我想打印"Hello",前面有40个空格.

另外,我想要打印的字符串由多行组成.我是否需要单独打印每一行?

编辑:为了清楚起见,我想在每一行之前打印40个空格.

c formatting printf

101
推荐指数
4
解决办法
20万
查看次数

硬包装和软包装的区别?

我正在编写文本编辑器.在查看其他文本编辑器后,我注意到其中一些是指"软"与"硬"包装.有什么不同?我似乎无法通过搜索找到答案.

word-wrap

90
推荐指数
3
解决办法
4万
查看次数

河内塔:递归算法

虽然我对理解递归没有任何问题,但我似乎无法绕过河内塔问题的递归解决方案.以下是维基百科的代码:

procedure Hanoi(n: integer; source, dest, by: char);
Begin
    if (n=1) then
        writeln('Move the plate from ', source, ' to ', dest)
    else begin
        Hanoi(n-1, source, by, dest);
        writeln('Move the plate from ', source, ' to ', dest);
        Hanoi(n-1, by, dest, source);
    end;
End;
Run Code Online (Sandbox Code Playgroud)

我理解基本情况和将问题分解成小块的概念,直到您能够移动单个磁盘.但是,我无法弄清楚非基本情况下的两个递归调用是如何协同工作的.也许有人可以帮助我?谢谢.

recursion towers-of-hanoi

63
推荐指数
4
解决办法
16万
查看次数

规范与非规范终端输入

我正在攻读考试,我对Unix中的规范与非规范输入/输出的工作原理感到困惑(例如,curses).我知道有一个缓冲区,"行规则"应用于规范输入.这是否意味着缓冲区被旁路用于非规范输入,还是仅仅意味着没有应用线路规则?输入和输出操作的这个过程有何不同?

在我使用的curses程序中演示了规范输入,用户输入的输入是在键入一定数量的字符或经过一定时间后自动输入的.这些事情中的任何一个都被视为"线条学科"还是完全不同于其他事情?

unix curses input

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

为什么我不能在ghci中定义新类型?

当我尝试定义一个新类型时,我在ghci中收到错误:

Prelude> data Point = Pt Int Int
<interactive>:1:0: parse error on input `data'
Prelude> let data Point = Pt Int Int
<interactive>:1:4: parse error on input `data'

我究竟做错了什么?

haskell ghci

36
推荐指数
4
解决办法
8788
查看次数

多个外键引用RoR中的同一个表

我希望客户引用两个地址模型,一个用于帐单地址,另一个用于送货地址.据我了解,外键由其名称决定,如_id.显然我不能将两行命名为address_id(以引用Address表).我该怎么做?

create_table :customers do |t|
  t.integer :address_id
  t.integer :address_id_1 # how do i make this reference addresses table?
  # other attributes not shown
end
Run Code Online (Sandbox Code Playgroud)

migration ruby-on-rails

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

map与mapM行为

我正在使用Real World Haskell的I/O章节.Monads在本书中未讨论另外7章.也就是说,我对I/O的理解充其量是不完整的.

现在我正在尝试理解mapM功能.据我所知,函数"执行"列表中的每个元素必须是"动作"(IO monad).

没有意义的是这个例子.为什么mapM返回的结果与映射相同的参数不同?

Prelude> map (\x -> [x]) [0, 1, 2]
[[0],[1],[2]]
Prelude> mapM (\x -> [x]) [0, 1, 2]
[[0,1,2]]

monads haskell map

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

覆盖Objective-C中的@property声明

我经常发现我知道基类的某个属性永远是子类中的某个类型.例如,在下面的示例中,属性obj将始终是Derived中的NSString对象.但是,我需要此属性是类Base中更通用的id类型.

@interface Base
@property (strong, nonatomic) id obj;
@end

@implementation Base
//@synthesize obj = obj_;
@dynamic obj;
@end


@interface Derived : Base
@property (strong, nonatomic) NSString *obj;
@end

@implementation Derived
@synthesize obj = obj_;
@end
Run Code Online (Sandbox Code Playgroud)

这段代码是否正确?我担心@synthesize会出现两次.这是创建两个属性,还是Derived中的@synthesize声明覆盖Base中的一个?

编辑:在Base中将@synthesize更改为@dynamic更有意义.

编辑:这需要iOS SDK 5.

objective-c

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