就像是
let f x = log(x)
Run Code Online (Sandbox Code Playgroud)
后来我可以将f应用于矩阵,向量或浮点数.
我想这是不可能的,因为F#是严格静态类型的.任何其他模式来克服这个问题?
谢谢!
我用Python生成了一个CSV文件.但是当我在Excel中打开它时,如果可以转换,Excel会自动将字符串识别为数字.
例如,33E105
变成33*10^105
,实际上是ID,而不是数字.
如何在打开CSV文件时在Excel中禁用此功能?或者我需要求助于excel-python库来输出excel文件并自己指定格式?
我也在网上找到了一个没有好答案的类似问题.
谢谢!
大量的阵列边界检查会降低速度,对于2D阵列尤其如此.有没有办法在F#中编写不安全的代码块?
我想写点像
let timeit (x:'a->'b) =
let start = System.DateTime.Now
x
let duration = System.DateTime.Now - start
printfn "time usage = %A" duration.Milliseconds
()
Run Code Online (Sandbox Code Playgroud)
它适用于
let matrixtest() =
let x = vector[1.;2.;4.]
let y = matrix[[1.;2.;4.;];[3.;4.;9.;]]
printfn "%A" (y * x)
()
Run Code Online (Sandbox Code Playgroud)
但不是
let rec fib x =
match x with
| 0 | 1 -> 1
| n -> fib (n-1) + fib (n-2)
Run Code Online (Sandbox Code Playgroud)
sa F#是静态类型的.
任何的想法?谢谢.
可以使用字符串拆分功能对一个简单的CSV行进行吐出.但有些线路可能有"
,例如
"good,morning", 100, 300, "1998,5,3"
Run Code Online (Sandbox Code Playgroud)
因此直接使用字符串拆分不会解决问题.
我的解决方案是先使用,
然后将字符串与字符串的"
开头或结尾分开,然后将字符串组合起来.
这个问题的最佳做法是什么?
我很感兴趣,如果有一个Python或F#代码片段.
编辑:我对实现细节更感兴趣,而不是使用库.
我找到:
abs -10
abs -10L
Run Code Online (Sandbox Code Playgroud)
都工作.所以我想知道F#是如何实现这个并在源代码中进行搜索的:
type AbsDynamicImplTable<'T>() =
let AbsDynamic x = AbsDynamicImplTable<_>.Result x
[<CompiledName("Abs")>]
let inline abs (x: ^T) : ^T =
AbsDynamic x
when ^T : ^T = absImpl x
Run Code Online (Sandbox Code Playgroud)
我对这些感到困惑.
正如我所知,在函数中abs
,我们必须将输入与0进行比较,并且对于不同的类型有不同的0.
谢谢.
我得到一个包含两个DLL的库,但没有详细的文档.我希望快速了解它的类设计.
我知道我可以使用Visual Studio中的对象浏览器来查看它们.但它不是很直观.是否有工具显示库的依赖关系图,或者更正式地显示UML图.输入只是DLL.
谢谢.
我经常使用F#.F#中的所有基本集合都实现了IEumberable接口,因此使用Seq
F#中的单个模块访问它们是很自然的.这在OCaml中是否可行?
另一个问题是,'a seq
在F#是懒惰的,例如我可以创建一个序列1
,以100
使用{1..100}
以上冗长:
seq { for i=1 to 100 do yield i }
Run Code Online (Sandbox Code Playgroud)
在OCaml中,我发现自己使用以下两种方法来解决此功能:
生成一个列表:
let rec range a b =
if a > b then []
else a :: range (a+1) b;;
Run Code Online (Sandbox Code Playgroud)或采用显式递归函数.
第一个生成额外的列表.第二个打破抽象,因为我需要使用更高阶函数(如map
和)在序列级别上操作fold
.
我知道OCaml库有Stream模块.但它的功能似乎非常有限,不像'a seq
F#那样通用.
顺便说一句,我最近使用OCaml玩Project Euler问题.所以有很多序列操作,在命令式语言中将是具有复杂体的循环.
我正在使用phantomjs来构建一个Web爬虫.我当前的抓取工具是使用selenium的Python脚本,需要运行Firefox浏览器.虽然Selenium适合调试脚本(因为我可以使用firebug来检查网页),但是如果没有GUI,它就无法部署在linux服务器上.所以我试图将我的Python脚本翻译成phantomjs.
要调试phantomjs脚本,我保存页面源html并将png屏幕截图渲染到磁盘,然后在Firefox中打开它以检查源页面.我想知道是否有更好的方法来做到这一点,例如phantomjs的插件等.