메타 프로그래밍을 사용하여 방정식 시스템의 잔차를 계산하는 함수를 만들려고합니다.메타 프로그래밍을 사용하는 방정식 시스템
이것은 내가 지금까지 (장난감 예) 시도 것입니다 : I 함수를 계산하려고 할 때
function syst!(x::Vector, ou::Vector)
for i in 1:length(x)
eval(parse("ou[$i] = x[$i]^2 + x[$i]"))
end
return ou
end
그러나, 줄리아 변수 x
가 정의되어 있지 않은 것을 말한다. 그러나 내가 println(parse("ou[$i] = x[$i]^2 + x[$i]"))
을 포함하면 함수의 본문에 "형식화 된"코드가 생깁니다. 올바른 기술 CS 용어를 사용하지 않으면 "과학 문화"에서 온 것입니다.)
어쨌든 parse
ed x
은 다른 범위에 있습니다. x
을 구문의 범위에 가져 와서 syst!
인수에서 x
을 나타낼 수 있습니까?
보너스 : 저는 700 방정식의 시스템을 가지고 있으며 메타 프로그래밍을 사용하여 "형식 지정"되어 있어야합니다. 시스템의 잔차를 계산하는 함수를 만드는 가장 좋은 방법/기술은 무엇입니까? 나는 올바른 길을 가고 있었습니까?
사전 알파 단계이지만 새로운 패키지 Dolang.jl은이 작업을 목표로합니다. 주 API 포인트는 줄리아 표현식, 허용 된 변수, 다른 함수 매개 변수를 취하여 함수를 출력하는'make_method' 함수입니다. 내가 말하는 방법은 [여기] (https://github.com/EconForge/dolang/blob/827ee3d200d35709b8e112b90f8703223834bf75/src/compiler.jl#L132-L144) – spencerlyon2
왜 메타 프로그래밍을 사용하고 있습니까? 이 예제는'eval (parse ("bit"와''''))'를 꺼내서'$'기호를 지우면 작동 할 것입니다. – StefanKarpinski