小编Rum*_*tov的帖子

如何在Haskell中返回列表的长度类型为Integer而不是Int

我试图返回列表的长度作为Integer类型,但应用length xs返回长度作为Int类型.我该如何解决这个问题?

这就是我想要实现的目标:(它不起作用)

sizeList :: [Integer] -> Integer
sizeList xs = length xs
Run Code Online (Sandbox Code Playgroud)

一旦我改变回归,它就会起作用,sizeList :: [Integer] -> Int但我不想这样做.

haskell

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

将 grep 输出连接到 UNIX 中的 echo 语句

我试图在单行上输出给定路径中的目录数。我的愿望是输出这个:

X多个目录

目前,通过我的 bash 脚本,我得到:

X-许多

目录

这是我的代码:

ARGUMENT=$1

ls -l $ARGUMENT | egrep -c '^drwx'; echo -n "directories"
Run Code Online (Sandbox Code Playgroud)

我该如何修复我的输出?谢谢

unix shell grep

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

检查字符串是否包含给定的子字符串,然后返回BOOLEAN

我试图提出一个带有2个字符串参数的haskell函数。然后检查第一个字符串是否包含第二个字符串作为子字符串。例如:“ bring”包含子字符串“ in”。如果通过“ bring”“ in”传递,则函数应返回true。到目前为止,这是我所拥有的,但实际上并没有用。部分工作。我不知道如何在递归情况下分配一个真值。

check::[Char]->[Char]->Bool
check [][]              =False
check _[]               =False
check []_               =False
check(x:xs)(y:ys)
 | y==x                 =True
 | otherwise            =check xs (y:ys)

main = do
print $ check "bring" "in"
Run Code Online (Sandbox Code Playgroud)

haskell

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

检查目录是否包含特定子目录

我正在尝试编写一个 shell 脚本,它检查给定目录是否包含特定命名的子目录。我将父目录作为第一个参数传递,并且仅传递子目录的名称。我希望脚本遍历父级的内容,并查看它是否包含目录类型的文件,该文件以我为子级传递的名称命名。

这是我的代码。在其中,我尝试将ls父级的输出通过管道传输到egrep命令。我正在尝试编写一个正则表达式来检查 的输出是否ls具有与我的孩子姓名相匹配(不相同。只是在其名称中的某个位置)的名称。

PARENT=$1
CHILD=$2

DIRNUM=$(ls -l $PARENT | egrep -c '< $CHILD >')
echo $DIRNUM
Run Code Online (Sandbox Code Playgroud)

unix bash shell

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

检查一个目录是否包含另一个目录

如何检查给定目录是否包含 shell 中的另一个目录。我想传递 2 个完整路径目录。(我知道这很愚蠢,但仅用于学习目的)。然后我想看看这两条路径中的任何一条是否包含在另一条路径中。

parent=$1
child=$2

if [ -d $child ]; then
    echo "YES"
else
    echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)

然而,这不使用父目录。只检查孩子是否存在。

unix bash shell

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

如何在Haskell中返回字符串异常?

我想知道如何返回一个非常简单的字符串异常.我写了一个函数"powered",取一个整数n,并返回2 ^(n).这是代码:

powered::Int->Int
powered n
 | n==1         =2
 | otherwise    =iter n double 1
Run Code Online (Sandbox Code Playgroud)

iter:

iter::Int->(Int->Int)->Int->Int
iter n f x
 | n==1         =f x
 | n>1          =iter (n-1) f (f x)
 | otherwise    =x
Run Code Online (Sandbox Code Playgroud)

和双:

double::Int->Int
double n = n*2
Run Code Online (Sandbox Code Playgroud)

此代码适用于所有自然数字.但是,我想说,如果我向它传递一个负整数,它会返回一个字符串异常,说:"输入不正确".我怎样才能做到这一点.这是我想要完成的伪代码:

powered::Int->Int
powered n
 | n==0         =1
 | n==1         =2
 | n>1          =iter n double 1
 | otherwise    ="Incorrect input"

main = do
print(powered (-1)) ~> "Incorrect input"
Run Code Online (Sandbox Code Playgroud)

haskell

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

逻辑表达式评估器Haskell

我写了以下逻辑表达式求值器.它适用于简单的2成员表达式,并且它会运行,但会为包含其他表达式的表达式产生错误,作为第二个/第一个成员.这是我的代码.

data Expression = Literal Bool | Operation Operator Expression Expression
data Operator = AND | OR

eval :: Expression -> Bool
eval (Literal x)                    = x
eval (Operation AND (Literal x) (Literal y))
 | x == True && y == True           = True
 | otherwise                        = False
eval (Operation OR (Literal x) (Literal y))
 | x == False && y == False         = False
 | otherwise                        = True
Run Code Online (Sandbox Code Playgroud)

使用此输入调用时,它可以正常工作:

main = do
print $ eval (Operation OR (Literal False) …
Run Code Online (Sandbox Code Playgroud)

haskell

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

ArrayIndexOutOfBoundsException:1.我的索引有什么问题?Java的

本质上,编写了一个从以下.txt文件中读取值的程序

P1 0 8
P2 1 4
P3 2 9
P4 3 3
p8 4 5
Run Code Online (Sandbox Code Playgroud)

每一行代表一个具有其属性的进程.p1是一个名称,0是p1的arr_time,8是p1的burst_time,如下所示:

public class Process {

    private String name;
    private int arrive_time= 0;
    private int burst_time = 0;
    private int remain_time = 0;

    public Process (String name, int arr_time, int bur_time) {

        this.arrive_time = arr_time;
        this.burst_time = bur_time;
        this.remain_time = burst_time;
        this.name = name;
    }

    public int getArrTime() {return arrive_time;}
    public int getBurTime() {return burst_time;}
    public int getRemTime() {return remain_time;}
    public String getName() {return name;} …
Run Code Online (Sandbox Code Playgroud)

java

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

可以有多个线程在JAVA中执行静态同步方法

我一直在网上寻找有关如何允许执行静态同步方法的信息.我发现静态同步方法将获得类锁.据我所知,这可以确保只允许所有现有类实例中的一个执行静态同步方法.这是真的吗?可以有两个类实例同时执行静态同步方法吗?因此,为了使其更具视觉效果,我正在添加代码示例.

public class A {

   private static synchronized void m1() {
      //Print something
   }

   private synchronized void m2() {
      //Print something else
   }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,因为静态方法是获取类级别监视器而非静态方法正在获取对象级监视器,所以两者都可以同时从2个不同的线程执行,如下所示:

A a = new A;
a.m2();//object-level lock acquired
a.m1();//Class-level lock acquired
Run Code Online (Sandbox Code Playgroud)

但是,如果我们有3个上述类的实例,它们是否可以同时运行m1()?我认为他们不能,但我不确定.那会发生这种情况吗?

A a = new A;
A aa = new A;
A aaa = new A;

a.m1();
aa.m1();
aaa.m1();
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

递归重复一个字符串

我正在尝试编写一个将需要2个字符串p和k的函数.它将检查p和k的长度并连续重复p中的字母,直到结果字的长度为k.例如:令p = 123且k = 45678.然后结果字= 12312,因为k的长度为5.因此,连续重复p的字符直到结束字达到k的长度.我的下面的代码无法正常工作:

repString::[Char]->[Char]->[Char]
repString [] (y:ys)         =[]
repString (x:xs) []         =[]
repString (x:xs) (y:ys)
 |length(x:xs)<length(y:ys) =(x:xs)++x:repString (xs) []

main = do
print $ repString "123" "45678"
Run Code Online (Sandbox Code Playgroud)

我不确定如何使这个工作,因为每次它到达x:xs的末尾,它将看到一个空字符串,然后它将满足相应的基本情况并终止.我不知道如何让它回到(x:xs)的开头并再次开始打印.

recursion haskell

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

Ruby代码合并两个数组不起作用

nums1 = Array[1, 2, 3, 4, 5]
nums2 = Array[5, 6, 7, 8, 9]

def mergeArrays (ar1, ar2)
   result = (ar1 << ar2).flatten!

   require 'pp'
   pp %w(result)
end
Run Code Online (Sandbox Code Playgroud)

就这么简单。我正在尝试合并这两个数组并显示结果。我也是Ruby的新手。这是我用这种语言编写的第一个函数。尝试在这里学习。另外,如何删除重复项?

ruby

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

在haskell中调用数据类型的函数

我怎么能从主打这个东西?

data Poly' = Lit Integer |
             Add Poly' Poly' |
             Sub Poly' Poly'

eval::Poly'->Integer
eval (Lit n)     = n
eval (Add p1 p2) = (eval p1) + (eval p2)
eval (Sub p1 p2) = (eval p1) - (eval p2)
Run Code Online (Sandbox Code Playgroud)

我正在尝试这个,但它不起作用:

main = do
print(eval Add(2 3))
Run Code Online (Sandbox Code Playgroud)

haskell

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

如何仅使用JavaScript重复更新<div>的内容?

目前我想转换此代码,以便它不会在提示框中显示i的值.我需要它来重复更新专用内部的i值<div>.这应该每秒发生一次,因此循环延迟1000ms.我如何转换此代码呢?

for(var i = 0; i > 10; i++) {
    setInterval(alert(i),1000);
}
Run Code Online (Sandbox Code Playgroud)

我需要它在这里显示:

<div id="timer"></div>
Run Code Online (Sandbox Code Playgroud)

html javascript

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

标签 统计

haskell ×6

shell ×3

unix ×3

bash ×2

java ×2

grep ×1

html ×1

javascript ×1

multithreading ×1

recursion ×1

ruby ×1