我尝试过各种方法从Project Gutenberg文本中剥离许可证,用作语言学习项目的语料库,但我似乎无法想出一种无监督,可靠的方法.到目前为止,我提出的最好的启发式方法是剥离前二十八行和后一个398,它们适用于大量文本.关于我可以自动剥离文本的方法的任何建议(对于许多文本非常相似,但在每种情况下略有不同,以及一些不同的模板),以及如何验证该文本的建议文本已被准确删除,会非常有用.
为了节省空间和必须保持不同源之间数据一致性的复杂性,我正在考虑存储某些子串的开始/结束索引,而不是存储子串本身.诀窍是,如果我这样做,我可能会一直创建切片.这是要避免的吗?切片操作员是否足够快我不需要担心?新对象创建/销毁开销怎么样?
好的,我吸取了教训.除非您尝试修复一个真正的问题,否则不要进行优化.(当然这并不意味着对不必要的错误代码,但这不是重点......)另外,在堆栈溢出之前测试和配置文件.= D谢谢大家!
blazehtml教程和其他博客文章非常清楚如何使字符串文字工作.我有那个.但是,如何将字符串(字节串,Data.Text等也可以工作)通常用于元素的属性/内容.Blazehtml看起来很棒,但如果没有它,它似乎毫无用处.= P
这里是示例输出和代码来显示确切的问题:
{-# LANGUAGE OverloadedStrings #-}
import Prelude
import qualified Prelude as P
import Text.Blaze.Html5
import Text.Blaze.Html5.Attributes
import qualified Text.Blaze.Html5 as H
import qualified Text.Blaze.Html5.Attributes as A
makeLink dest cont = renderHtml $ a ! src dest $ cont
Run Code Online (Sandbox Code Playgroud)
*Main> let foo = "foo" *Main> let bar = "bar" *Main> makeLink foo bar :1:9: Couldn't match expected type `AttributeValue' against inferred type `[Char]' In the first argument of `makeLink', namely `foo' In the expression: makeLink foo bar In the …
我想创建一个脚本,当我将它连接到我的macbook pro时自动备份我的kindle文件.编写脚本完全符合我的能力,但我不知道在mount上自动运行脚本的最佳方法是什么.
修订概要
好吧,看起来系统调用肯定与GC有关,而潜在的问题只是GC经常发生.这似乎与splitWhen和pack的使用有关,我可以通过分析来判断.
splitWhen的实现将每个块从惰性文本转换为严格文本,并将它们连接起来,因为它构建了一个块缓冲区.这必然会分配很多.
pack,因为它从一种类型转换为另一种类型,必须分配,并且这是在我的内部循环中,所以这也是有意义的.
原始问题
我在基于haskell枚举器的IO中偶然发现了一些令人惊讶的系统调用活动.希望有人可以对此有所了解.
我一直在玩一个快速perl脚本的haskell版本,我曾经写过几个月,开启和关闭.该脚本从每一行读入一些json,然后打印出特定的字段(如果存在).
这是perl版本,以及我如何运行它.
cat ~/sample_input | perl -lpe '($_) = grep(/type/, split(/,/))' > /dev/null
Run Code Online (Sandbox Code Playgroud)
这是haskell版本(它与perl版本类似地调用).
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.Enumerator as E
import qualified Data.Enumerator.Internal as EI
import qualified Data.Enumerator.Text as ET
import qualified Data.Enumerator.List as EL
import qualified Data.Text as T
import qualified Data.Text.IO as TI
import Data.Functor
import Control.Monad
import qualified Data.Text.Lazy as TL
import qualified Data.Text.Lazy.IO as TLI
import System.Environment
import System.IO (stdin, stdout)
import GHC.IO.Handle (hSetBuffering, BufferMode(BlockBuffering))
fieldEnumerator …
Run Code Online (Sandbox Code Playgroud) 什么是::
拉斯特语法,看到这里,意思是:
fn chunk(n: uint, idx: uint) -> uint {
let sh = uint::BITS - (SHIFT * (idx + 1));
(n >> sh) & MASK
}
Run Code Online (Sandbox Code Playgroud)
在像Haskell这样的语言中,它意味着一个类型提示,但是这里编译器已经有了一个值类型的注释,所以它似乎很可能是类型转换.
在过去的几天里,我一直在构建一个基本的实时评估javascript开发环境(我称之为WEPL.),并意识到能够将错误消息与行号相关联是件好事.不幸的是,eval()并没有提供一个很好的方法,我可以找到.
到目前为止我提出的解决方案是在eval()之前转换源,这样它就是一组嵌套调用eval()的包装器,它在eval之前记录一些信息,检查eval是否成功,以及然后使用该信息向用户输出更有用的故障排除信息.
我的问题是,为什么这可能是一个坏主意?我需要解决哪些问题才能确保效果良好?
我的意思是一种转变的例子,只是为了使这个具体化.
这个
if (cond) {
return foo + bar;
}
else {
return baz + quux;
}
Run Code Online (Sandbox Code Playgroud)
变成了这个
if (myEval('cond')) {
return myEval("myEval(\"foo\") + myEval(\"bar\")");
else {
return myEval("myEval(\"baz\") + myEval(\"quux\")");
}
Run Code Online (Sandbox Code Playgroud)
我显然没有包装最高级别,虽然我可以,而程序化版本会.
我遇到了一个似乎是由gcc没有找到随附的标头引起的问题.我不太了解C/GCC,我想我会检查编译器应该始终能够找到那些头是否安全.也许设置-I参数会覆盖这个?还是其他什么时髦的?
原始问题是在github上的鞋子这个问题.
嗨!我已经尝试在10.8上构建,使用非llvm gcc,如另一个问题所述,并通过调整rakefile来在正确的位置获取正确的sdk.
但
它仍然无法编译.
这是错误报告的开头(它真的很长)
Run Code Online (Sandbox Code Playgroud)new-host-2:shoes benjamingattet$ rake gcc -I. -c -o shoes/app.o -Wall -I/usr/local/include -I/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.0.0 -I/usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1 -I/usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/x86_64-darwin12.0.0 -O -DRUBY_1_9 -DSHOES_QUARTZ -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -fpascal-strings -Os -w -pipe -march=core2 -msse4.1 -mmacosx-version-min=10.8 -fno-common -x objective-c -fobjc-exceptions -isysroot /Developer/SDKs/MacOSX10.8.sdk -arch x86_64 shoes/app.c shoes/app.c:5:18: error: glib.h: No such file or directory In file included from shoes/app.c:6: ./shoes/app.h:13:19: error: cairo.h: No such file or directory In file included from /usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/ruby.h:32, from ./shoes/app.h:14, from shoes/app.c:6: /usr/local/Cellar/ruby/1.9.3-p194/include/ruby-1.9.1/ruby/ruby.h:48:21: error: string.h: …
有人可以展示如何在阅读器monad中使用snap monad吗?Monad变形金刚迷惑我.(或者,我很乐意接受有关monad变换器的教程的建议,以及查看光线的方法,并最终了解它们.)
编辑:糟糕; 忘了说明我实际上要做的事情,而不是寻求特定事情的帮助.战略,而不是战术.我特别希望在所有处理程序之间共享数据库连接/池,而不必在指定路由时显式传递该数据库连接/池.似乎读者monad将是实现这一目标的方法.
haskell ×3
c ×1
corpus ×1
daemon ×1
gcc ×1
ghc ×1
heuristics ×1
interpreter ×1
javascript ×1
macos ×1
monads ×1
mount ×1
nlp ×1
optimization ×1
performance ×1
python ×1
rust ×1
stripping ×1
syntax ×1
types ×1