You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Erlang代码编译失败求助:test.erl报错问题排查

问题分析与修复方案

咱们来一步步拆解你遇到的两个编译报错,其实根源都在代码的符号使用和格式上👇

1. 中文全角分号触发的语法错误

你代码里写的分号是中文全角的“;”,但Erlang编译器只认英文半角的;。这个全角符号会被当成非法字符,直接抛出syntax error before: ;的报错。

2. area/1函数未定义的连锁问题

因为第一个语法错误导致编译流程中断,编译器没能正确识别你写的area/1函数逻辑,所以才会额外提示function area/1 undefined。另外你的代码写得过于紧凑,也加重了编译器的识别难度。

修正后的完整代码

把全角分号改成半角,同时按Erlang规范换行排版,代码可读性也会更好:

-module(test).
-export([area/1]).

% 用海伦公式计算三角形面积
area({triangle, A, B, C}) ->
    S = (A + B + C) / 2,
    math:sqrt(S * (S - A) * (S - B) * (S - C)).

重新编译验证

现在用你原来的命令重新编译:

erlc ./test.erl

就能正常通过编译了。如果之后要扩展area/1的功能(比如加个计算圆形面积的子句),记得每个子句结尾用半角分号,最后一个子句用句号收尾就好。

内容的提问来源于stack exchange,提问作者Vitaly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:43:26