小编use*_*616的帖子

Haskell列表理解谓词顺序

我对Haskell很新,我正在尝试用代数组做一些事情.我的第一个功能就是采取一个操作和一个集合,找到可以通过在同一个集合的成员对上执行该操作而生成的集合的所有成员.这是我的代码:

group' f xs = [a | a <- xs, a <- combSet]
    where combSet = [f x y | x <- xs, y <- xs]
Run Code Online (Sandbox Code Playgroud)

但是,此代码只返回combSet的成员集,忽略a <- xs谓词:

*Main> group' (*) [1, 2, 3, 4, 5]
[1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20,5,10,15,20,25,1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20,5,10,15,20,25,1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20,5,10,15,20,25,1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20,5,10,15,20,25,1,2,3,4,5,2,4,6,8,10,3,6,9,12,15,4,8,12,16,20,5,10,15,20,25]
Run Code Online (Sandbox Code Playgroud)

但是,当我将理解谓词的顺序切换为

group' f xs = [a | a <- combSet, a <- xs]
    where combSet = [f x y | x <- xs, y <- xs]
Run Code Online (Sandbox Code Playgroud)

它返回正确的值,但列表比预期的要大:

*Main> group' (*) [1, 2, 3, 4, 5]
[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我为什么会发生这种情况,或者我是否做了一些愚蠢的事情?

haskell functional-programming list-comprehension

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

Java:在JPanel/JFrame中创建可编辑的项目列表

对不起,我是GUI接口的初学者(好吧,初学者到java,真的),我想知道:如何制作用户可以添加项目或从中删除项目的项目列表,按下+或 - 按钮?

我真正想要的(抱歉,如果我在这里有点模糊)是你有时在应用程序窗口中看到的列表之一,它看起来像一个文本框但无法输入.现在我的应用程序(它是一个小应用程序到组织医院的时间表)只需从文本文件中读取并写入另一个文本文件.没有GUI,没有窗口,用户只需在文本文件中写入一堆名称,每行一个,然后运行jar并打开输出文件,并且计划就在那里.我希望他们能够通过按钮添加或删除列表中的名称 - 通过单击"加号"并键入名称来添加名称,并通过选择名称并单击"减号"来删除名称.但是,我仍然希望将其保存到文本文件中,以便下次用户打开应用程序时,所有名称仍然在列表中.要清楚,

非常感谢您提供的任何帮助.

java user-interface swing input

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