背景
为了好玩,我正在尝试编写一个用于快速检查的属性,可以使用RSA测试加密技术背后的基本思想.
对于所有x这些,1 < x < N总是如此(x^e)^d = x modulo N
换句话说,x是"消息",将其提升到e功率mod N是"编码"消息的行为,并且将编码消息提升到d功率mod N是"解码"它的行为.
(该属性也非常简单x = 1,一个是自己加密的情况)
码
以下是我到目前为止编写的方法:
import Test.QuickCheck
-- modular exponentiation
modExp :: Integral a => a -> a -> a -> a
modExp y …Run Code Online (Sandbox Code Playgroud) 除了"text/css"之外,还有其他类型的浏览器支持样式标记吗?(不包括css的任何同义词).如果没有,那么为什么不呢?
<style type="???"> ... </style>
Run Code Online (Sandbox Code Playgroud) 我想创建这个函数,它从集合中选择一个随机元素:
randElem :: (RandomGen g) => Set a -> g -> (a, g)
Run Code Online (Sandbox Code Playgroud)
可以编写简单的列表实现.例如(代码更新,验证工作):
import Data.Set as Set
import System.Random (getStdGen, randomR, RandomGen)
randElem :: (RandomGen g) => Set a -> g -> (a, g)
randElem s g = (Set.toList s !! n, g')
where (n, g') = randomR (0, Set.size s - 1) g
-- simple test drive
main = do g <- getStdGen
print . fst $ randElem s g
where s = Set.fromList [1,3,5,7,9]
Run Code Online (Sandbox Code Playgroud)
但是使用 …
leksah是否支持任何类型的插件?会吗?它是否内置了任何插件,如hlint,hoogle,pl,djinn?如果没有,是否有一种简单的方法来整合这些东西?
我想知道为什么不存在部分函数类型的文字.我得写
val pf: PartialFunction[Int, String] = {
case 5 => "five"
}
Run Code Online (Sandbox Code Playgroud)
字面意思:=>较短的地方:
val pf: Int :=> String = {
case 5 => "five"
}
Run Code Online (Sandbox Code Playgroud)
部分函数经常被使用并且在Scala中已经有了一些"特殊"功能,为什么没有特殊的语法呢?
我刚刚开始学习Haskell,并且会发现查看Haskell函数是如何实现的非常有用.我已经能够在不同的问题上找到标准前奏曲,但我现在对Data.List感兴趣.有没有办法找到这些功能的来源?
我真的很想看到排列和结点(其余的,但这些对我来说最有趣).
假设我有一些像这样编写的代码:
import Control.Exception (bracketOnError, finally, mask)
import Client (acquireB, releaseB, doStuff) -- theoretical
import MyStuff (preliminary, doMoreStuff) -- theoretical
clientAction = bracketOnError acquireB releaseB $ \b ->
doStuff b
return (b, releaseB b)
myAction = mask $ \restore ->
a <- preliminary
(thing, releaseThing) <- restore clientAction
doMoreStuff a thing `finally` releaseThing
Run Code Online (Sandbox Code Playgroud)
我必须做一些preliminary事情,我的客户获得b然后必须doStuff与b,然后我必须doMoreStuff与b.并且b需要释放,即使发生异步异常.但我不知道如何发布b,所以我的客户告诉我如何.以这种方式编写,b如果在"我们的"代码中发生异常,我们都准备发布.
我的问题是:异步异常是否有可能导致releaseB不执行?具体来说,"我的代码"和"我的客户端代码"之间是否存在间隙,异步异常可以挤入其中?让我内联clientAction并bracketOnException解释.
myAction = …Run Code Online (Sandbox Code Playgroud) (不重要的背景信息/动机)
我正在实施一个不同的版本nub,受到Yesod书的劝阻使用它的启发.
map head . group . sort比打电话更有效率nub.但是,在我们的案例中,订单很重要......
所以我开始写一个类似于订单不重要版本的"更好"的小块.我最终得到了这个:
mynub = unsort . map head . groupBy (\x y -> fst x == fst y) . sortBy (comparing fst) . rememberPosition
rememberPosition = flip zip [0..]
unsort = map fst . sortBy (comparing snd)
Run Code Online (Sandbox Code Playgroud)
这肯定会做很多额外的工作,但它应该是O(n log n)而不是原始nub的O(n 2).但这不是重点.问题是,它太长了!它真的不是那么复杂,但它很长(而且我是那些讨厌超过80列的人,或StackOverflow代码块上的水平滚动条).
(问题)
在Haskell中表达长链函数组合的更好方法是什么?
public Foo doDangerousStuff() throws Exception {
try {
dangerousMethod();
return new Foo();
} catch (Exception e) {
throw e;
} finally {
mustBeCalledAfterDangerousMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
这与我们省略catch子句的行为有什么不同吗?
public Foo doDangerousStuff() throws Exception {
try {
dangerousMethod();
return new Foo();
} finally {
mustBeCalledAfterDangerousMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
[编辑]为了清除混淆,是的,catch除了重新抛出异常之外,该块不执行任何操作.我想知道这是否会在finally调用块时引起某种不同的排序(假设调用者捕获了抛出的异常),但是从我从答案推断出来的情况来看,它并没有.
我们如何打印一个返回一个IO字符串的函数的输出到stdout?我无法使用节目或印刷品.
haskell ×7
asynchronous ×1
browser ×1
coding-style ×1
control-flow ×1
css ×1
exception ×1
generator ×1
hlint ×1
io ×1
java ×1
leksah ×1
mime-types ×1
performance ×1
plugins ×1
properties ×1
quickcheck ×1
random ×1
resources ×1
rsa ×1
scala ×1
set ×1
stdout ×1
stylesheet ×1