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
相关产品推荐
相关产品推荐

