我是Haskell的新手,我知道Haskell标准库被拆分成modules,每个都包含functions,types并且它们以某种方式相关并用于某些共同目的.我想看看那些库函数的实现(代码).我在哪里可以看到它?是否有任何命令,ghci以便我可以看到实现或提供任何资源来了解模块.谢谢
我的意思是我们知道静态成员应该只属于类,而不是从类创建的任何对象的一部分.但我们也可以通过对象访问静态方法吗?让我们说getInstaceCount()是静态成员Class CharStack.例如,我可以在这里创建对象并访问CharStack的静态成员:
CharStack stack1 = new Charstack(10);// declaring object
int count1 = stack1.getinstanceCount();//accessing Static member with the object
Run Code Online (Sandbox Code Playgroud)
所以上面我也可以使用对象stack1访问Charstack的静态成员,所以我怀疑静态成员的确切用法是什么,如果它的对象甚至可以访问?同样为什么类的实例变量不能被类访问?
我对下面的例子中Haskell执行的确切方式感到有些困惑
sum (takeWhile (<10000) (filter odd (map (^2) [1..])))
Run Code Online (Sandbox Code Playgroud)
在这里查找所有奇数方格是小于总和的代码10000 ,我知道如何将这些takewhile,filter,map职能的工作.我的疑问是,这里的map函数是从无限列表中取一个元素并将其平方并将平方元素列表返回给filter函数吧?在这种情况下,它将无限运行,以便无限的元素列表不是吗?或者它只采取一个元素平方,然后返回filter?
我是Haskell的新手,我试图通过使用shiftingASCII值来加密纯文本,如果我的纯文本包含数字,那么它必须通过用特殊符号代替数字来编码每个数字(0=*,1=',2=~,3=!,4=@,5=#,6=$, 7=%,8=^,9=&).所以这是我的加密代码
import Data.Char
canEncrypt :: Char -> Bool
canEncrypt c = isLower(c) && isAscii(c)
encryptChar :: Char -> Char -> Char
encryptChar shift c
| canEncrypt c = chr(ord(c)+ord(shift))
| isUpper c = c
| isNumber c = if (c == 0) then '*'
else if (c == 1) then '\'
else if (c == 2) then '~'
else if (c == 3) then '!'
else if (c == 4) then '@'
else if (c==5) …Run Code Online (Sandbox Code Playgroud) 我是Haskell的新手,我试图通过使用移动ASCII值来加密纯文本,如果我的纯文本包含数字,那么它必须通过用特殊符号代替数字来编码每个数字(0 =*,1 ='\',2 =〜,3 =!,4 = @,5 =#,6 = $,7 =%,8 = ^,9 =&).以下是我的代码
import Data.Char
isInRange :: Char -> Char -> Char -> Bool
isInRange l u c = (c >= l) && (c <= u)
--is this Letter to be ciphered
canEncrypt :: Char -> Bool
canEncrypt c = isLower(c) && isAscii(c)
-should we wrap around the alphabet ?
wraparound shift c
| isLower c && ord(c)+shift > ord 'z' = True
| otherwise = False
--encrypt single …Run Code Online (Sandbox Code Playgroud) 我是haskell.am的新手,试图为给定的纯文本加密实现加密.下面是我的示例代码
encryptChar :: Int -> Char -> Char
encryptChar shift c
| canEncrypt c = chr(ord c + wrapshift)
| isUpper c = c
where wrapshift = let shift' = shift `mod` 26
in if (wraparound shift' c)
then shift'-26
else shift'
encryptChar _ '0' = '*'
encryptChar _ '1' = '\''
encryptChar _ '2' = '~'
encryptChar _ '3' = '!'
encryptChar _ '4' = '@'
encryptChar _ '5' = '#'
encryptChar _ '6' = '$'
encryptChar _ '7' …Run Code Online (Sandbox Code Playgroud)