标签: hacklang

OCaml作为Hacklang和Flow背后的编程语言有什么好处?

最近,Facebook宣布了Flow,一种用于JavaScript的静态类型检查器,主要在OCaml中实现(https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-javascript/).

Hacklang(带静态类型检查器的PHP)也主要用OCaml编写.所以,我想知道OCaml制作静态类型检查器的独特优势是什么?

javascript ocaml hacklang flowtype

34
推荐指数
1
解决办法
3673
查看次数

用HHVM编写的代码比使用PHP编写的代码快吗?

我们可以期望通过从HHVM上的PHP过渡到Hack来获得速度提升吗?

我正在考虑强类型参数/返回类型,特别是标量,它允许HHVM在将代码编译为本机代码方面做得更好,或者与使用经典PHP及其混合类型相比,速度增益无关紧要?

php hhvm hacklang

27
推荐指数
1
解决办法
7833
查看次数

你会如何从PHP迁移到Hack?

Facebook推出了一种新的编程语言,它看起来就像是PHP的扩展.他们称之为Hack,它在他们的HHVM引擎上运行.

在看到他们的网站并阅读了一下之后,我想知道从PHPHack的迁移有多么流畅.

让我们围绕已经部署到LEMP或LAMP堆栈的Web应用程序进行讨论.

我的一些初步想法和行动清单包括:

  • 如何在迁移代码库的过程中运行PHP和Hack?
  • 从nginx/Apache迁移到HHVM
  • 迭代迁移代码库

那么,你会怎么做呢?

php hhvm hacklang

21
推荐指数
1
解决办法
5418
查看次数

哪些IDE支持Hack语言?

有没有人设法找到HHVM用于黑客语言的IDE?是否有任何插件可用于知名的IDE像Eclipse,Netbeans的,等等?谢谢!

编辑:当SiebelsTim嵌入了typechecker并为Sublime做了一个基本的语法高亮时.你可以在这里找到插件

ide editor hacklang

16
推荐指数
2
解决办法
8419
查看次数

hacklang的框架?

Hacklang可能仍然是相对较新的,但有没有任何框架(例如MVC),它们有充分的文档记录?我偶然发现了Fastuc或者Hack-mvc,但他们似乎还没准备好,而且文档非常稀少;

有什么想法吗 ?非常感谢 !

frameworks hacklang

11
推荐指数
2
解决办法
7536
查看次数

hacklang的形状

我今天开始学习hacklang,现在我有点卡在形状上:http: //docs.hhvm.com/manual/en/hack.shapes.php

我理解形状的概念,它似乎对我很有用,但我无法理解为什么例如这段代码不会抛出任何错误:

<?hh

type Point2D = shape('x' => int, 'y' => int);

function dotProduct(Point2D $a, Point2D $b): int {
    return $a['x'] * $b['x'] + $a['y'] * $b['y'];
}

function main_sse(): void {
    echo dotProduct(shape('x' => 3, 'y' => 'this should cause an fatal error?'), shape('x' => 4, 'y' => 4));
}

main_sse();
Run Code Online (Sandbox Code Playgroud)

'y'键定义为整数,但是当我传递一个字符串时,不会显示错误.谢谢你的帮助 :)

hhvm hacklang

8
推荐指数
1
解决办法
2852
查看次数

如何使用hacklang/hhvm的Mysql PDO驱动程序

当我尝试使用hacklang/hhvm(今天编译)通过PDO访问MySql时,我得到了一个pdo异常"找不到驱动程序".我尝试安装php5-mysql,但我甚至不确定它是否有用,因为我不确定php和hacklang之间的关系,特别是在扩展方面.我该怎么做才能让PDO在hacklang上工作?

更新:

我找到了支持的扩展名列表:https: //github.com/facebook/hhvm/wiki/Extensions

PDO和MySql都在那里,但我应该寻找mysql_pdo吗?或者我需要做一些配置吗?

php mysql pdo hhvm hacklang

7
推荐指数
1
解决办法
2461
查看次数

常见的php函数在hack中

我决定开始一个新项目进入hacklang,并在修复了一些问题之后我最初遇到了从php习惯过渡的问题,我遇到了以下错误:

Unbound name: str_replace
Unbound name: empty
Run Code Online (Sandbox Code Playgroud)

做一些研究我发现这是因为使用了'遗留'的php,它不是类似于typecheck,并且会出错//strict.

这很好,所有,empty()很容易取代,但str_replace()有点困难.

是否有一个等效函数可以使用//strict?或至少类似的东西.

我知道我可以使用,//decl但我觉得在我的情况下失败了目的.

是否至少有任何方法可以告诉哪些函数在hack中实现,哪些不在文档中,因为我找不到?

作为参考(虽然它与问题本身不太相关),这里是代码:

<?hh //strict
class HackMarkdown {
    public function parse(string $content) : string {
        if($content===null){ 
            throw new RuntimeException('Empty Content');
        }
        $prepared = $this->prepare($content);

    }
    private function prepare(string $contentpre) : Vector<string>{
        $contentpre = str_replace(array("\r\n","\r"),"\n",$contentpre);

        //probably need more in here
        $prepared = Vector::fromArray(explode($contentpre,"\n"));
        //and here
        return $prepared;
    }
}
Run Code Online (Sandbox Code Playgroud)

hacklang

7
推荐指数
1
解决办法
2817
查看次数

HACK Lambda示例 - 什么?

谁能解释一下这是如何工作的?

http://docs.hhvm.com/manual/en/hack.lambda.php

变量是自动和可传递的(包括$ this):

<?hh
$z = 11;
$foo = $x ==> $y ==> $x * $z + $y;
$bar = $foo(5);
var_dump($bar(4)); // outputs 59
Run Code Online (Sandbox Code Playgroud)

php lambda hhvm hacklang

6
推荐指数
1
解决办法
731
查看次数

混合PHP/Hacklang:在带有注释类型注释的常规PHP上使用typechecker

由于缺乏对64位VM的访问权限,我目前无法构建hhvm,因此我无法使用他们拥有的类型检查程序.他们的文档似乎没有详细描述类型检查器(hh_server和hh_client?)的操作.

我想知道,对于任何使用过它的人来说,如果在这种情况下可以使用类型检查器:

假设某人无法将他们的PHP代码库转换为Hack,所以他们用hacklang类型注释的形式编写带有注释的PHP,并在构建时使用工具剥离注释,制作一个hh文件,运行typechecker并报告错误.

例如原始PHP:

<?php
function lar(/* int */ $x)/* : int */
{
    return $x;
}
Run Code Online (Sandbox Code Playgroud)

复制上面的内容,删除注释,更改?php到?hh:

<?hh
function lar(int $x): int
{
    return $x;
}
Run Code Online (Sandbox Code Playgroud)

通过类型检查器运行它,看它是否会产生错误.

这样,您就可以使用普通PHP访问合法类型检查,而无需在HHVM上运行它.typechecker是否以适合此设置的方式运行?

php hacklang

5
推荐指数
1
解决办法
1655
查看次数

标签 统计

hacklang ×10

hhvm ×5

php ×5

editor ×1

flowtype ×1

frameworks ×1

ide ×1

javascript ×1

lambda ×1

mysql ×1

ocaml ×1

pdo ×1