阅读《使用 Haskell 编程》一书时,其中一个问题是查找给定元素是否位于列表的前半部分。这可以完成为
isInFirstHalf x xs = elem x firstHalf
where firstHalf = take (length xs `div` 2) xs
Run Code Online (Sandbox Code Playgroud)
然而问题是这里length遍历了整个列表。在命令式语言中,可以通过跟踪元素索引和当前计数器来尽早缩短循环。例如,如果列表有一百万个元素,并且第三个元素有匹配项,那么一旦完成第六个元素的循环,您可以立即返回 true。
我的问题是是否有办法在 Haskell 中实现类似的东西。
我对 html、d3js 或 javascript 不太了解,但根据 Udacity 的一些课程,我可以将 d3js 加载到任何网站,并在 Web 开发人员控制台中输入此代码:
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://d3js.org/d3.v4.min.js';
document.head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
看起来很简单,除了我的 jupyter notebook 之外,它适用于我尝试过的每一页。该脚本被附加在<head>标签中,但它的不透明度非常低,当我尝试运行一些 d3js 代码时它不起作用(运行d3.select("p");给出ReferenceError: d3 is not defined)。还有其他解决方法吗?
因此,我想为自己的项目创建一个模块,并希望使用方法。例如,我想做:
from mymodule import *
df = pd.DataFrame(np.random.randn(4,4))
df.mymethod()
Run Code Online (Sandbox Code Playgroud)
看来我无法使用,.myfunc()因为我认为只能为自己创建的类使用方法。解决方法是制作mymethod一个函数并将其pandas.Dataframes用作变量:
myfunc(df)
Run Code Online (Sandbox Code Playgroud)
我真的不想要这样做,还是有实现第一个的方法吗?
这是一个有点开放的问题,但是,制作一个好的可扩展电子应用程序的好方法是什么?VSCode、Atom 和许多其他人支持扩展,但他们的代码库太大,我无法理解正在发生的事情。我对 Jupyterlab 感到非常惊讶,据他们说,它包含一个小核心,其他一切都只是它上面的扩展。所以我想知道如何构建这些应用程序。
我的具体问题是:
我正在尝试学习 Haskellpars和parseqHaskell。我做了以下事情:
import Control.Parallel
import System.Random
quicksort :: Ord a => [a] -> [a]
quicksort [] = []
quicksort (x : xs) = losort ++ x : hisort
where
losort = quicksort [y | y <- xs, y < x]
hisort = quicksort [y | y <- xs, y >= x]
parallelQuicksort :: Ord a => [a] -> [a]
parallelQuicksort [] = []
parallelQuicksort (x : xs) =
losort `par` (hisort `pseq` (losort ++ (x : …Run Code Online (Sandbox Code Playgroud) haskell ×2
javascript ×2
architecture ×1
d3.js ×1
electron ×1
html ×1
methods ×1
module ×1
pandas ×1
python ×1