cost 101 ms
Racket - 如何定義可以在語法轉換器和普通代碼中使用的 function?

[英]Racket - How to define a function that can be used both in syntax transformers and ordinary code?

我正在使用語法轉換器在 Racket 中定義宏。 我想創建一些輔助函數來幫助我操作語法。 但是,我在語法轉換器之外定義的函數在語法轉換器內部是不可用的。 例如,在下面的代碼中(define (my-function x) (+ x 1)) (define-syntax my-macro (l ...

`quote` 宏是如何實現插值的?

[英]How does the `quote` macro achieve interpolation?

quote (聲明性)和proc_quote (過程性)宏如何允許對局部變量進行插值? 由於(聲明性)宏是衛生的,我希望它們無法訪問調用它們的環境。 ...

如何關閉宏觀衛生?

[英]How to turn off macro hygiene?

我正在嘗試制作一個粘貼在樣板代碼中的宏,然后我想使用它粘貼的變量。 Rust 的宏觀衛生正在防止這種情況發生; 我該如何關閉它? 我知道有一些方法可以解決它,通過將所有變量傳遞給宏,但這會使宏無用......我發現了一個名為 unhygienic 的箱子,它說它就是這樣做的,但我無法得到它工作。 ...

如何從 Zomato 中提取衛生等級?

[英]How can I extract hygiene ratings from Zomato?

我正在開展一個項目,我希望分析德里 Zomato 上列出的餐廳的衛生等級。 我可以使用 Zomato /search API 獲取餐廳詳細信息,但 API 沒有提供餐廳的衛生等級。 我嘗試抓取,但我不斷收到錯誤消息。 Web 刮碼: 我不斷收到以下錯誤: 有沒有其他方法可以從 Zomato 中提 ...

將宏變量傳遞給 function 進行插值

[英]Passing macro variable to function for interpolation

我正在嘗試編寫一個評估表達式然后將其與一些值進行比較的宏。 對於這篇文章,我已將問題簡化為一個較小的示例。 因為我不想多次評估 expr,所以我想將它保存在一個變量中。 所以我嘗試了這個: 但是后來我發現val在@small_good的插值中是未定義的。 我也嘗試過傳遞use_val(:val)但這 ...

如何在程序宏生成的代碼中創建衛生標識符?

[英]How can I create hygienic identifiers in code generated by procedural macros?

在編寫聲明性( macro_rules! )宏時,我們會自動獲得宏衛生。 在這個例子中,我在宏中聲明了一個名為f的變量,並傳入了一個標識符f ,它變成了一個局部變量: 這段代碼可以編譯,但如果你查看部分展開的代碼,你會發現存在明顯的沖突: 我正在編寫這個聲明性宏的等價物作為過程宏,但不知道如 ...

如果 Github 中不存在自定義標簽,則阻止合並

[英]Prevent merge if the custom labels are not present in Github

我正在為我的團隊制定衛生發展流程。 作為其中的一部分,我希望構建的每個代碼都經過單元測試和 QA 驗證。 我已經為代碼存儲庫創建了自定義標簽,例如 QA Ready、Prod Ready。 除非存在上述自定義標簽,否則如何確保 PR 不會合並到 master? ...

為什么下一個不被gensymed?

[英]Why is next not gensymed?

這里x是gensymsy的,因為傳遞給某些表達式and可以在其中包含x並避免了該沖突。 那為什么next不被gensymed? next不能導致變量捕獲嗎? ...

制作一個生成lambda的球拍宏

[英]Making a racket macro that generates a lambda

我正在嘗試制作一個小shell,用於對csv文件進行類似sql的查詢(出於好奇和嘗試學習Racket)。 為此,我想實現一個具有這種粗略結構的select宏(我計划將x作為db的列,但現在只傳遞一行): (其中細節是文件IO和管道代碼) x的范圍不是我想象的那樣: 我找到 ...

產生嵌套模塊錯誤的球拍宏

[英]Racket macro that generates a nested module error

在嘗試使用球拍的宏時,我偶然發現了一個定義,該定義最初對我而言並不明顯,為什么它被拒絕了。 代碼簡短,否則可能無用,但如下所示: 投訴內容為quote: unbound identifier; also, no #%app syntax transformer... quote: u ...

在Scheme中編寫myletstar宏(衛生)

[英]Writing myletstar macro (hygiene) in Scheme

我正在嘗試重新編寫let*衛生宏,我將其作為普通宏,如果可能的話,我希望將其作為衛生宏。 我對這種宏類型沒有太多的經驗。 因此,我非常感謝您的幫助。 同樣,我對工作let*宏的另一種表示不起作用,與衛生宏有相同的錯誤。 工作let* 不能正常工作, let* -> 錯誤 ...

在define-syntax體中,datum-> syntax和syntax#'有什么區別?

[英]What is difference between datum->syntax and syntax #' in define-syntax body?

測試代碼: 我不明白test-d和test-e的區別。 他們看起來一樣平等。 仍然,沒有定義callme。 甚至宏步也說它是一樣的。 我想在test-d中缺少一些通過stx在test-e傳遞的信息(上下文?)。 我怎樣才能使用#'來定義callme ? ...

為什么即使對於模板范圍內的代碼也必須進行臟注入?

[英]Why dirty injection is necessary even for code within template's scope?

請考慮以下幾點: 這將生成並運行並產生輸出: 4 但是,如果刪除 {.inject.}編譯指示,則會得到: ...從這里開始的模板/泛型實例化 錯誤:未聲明的標識符:“ b” 我認為我們不能考慮到模板“內部”以外的代碼echo b塊,因為:它僅與模 ...

使用可變參宏動態前綴宏名稱

[英]Dynamically prefix macro names with a variadic macro

背景 我利用了另一個問題中的一組預處理器宏,該宏使我可以在源代碼中添加符號名稱 (枚舉,函數名稱,結構名稱等)的前綴 ,即: 問題 這可以按預期工作,並具有以下輸出: i is 123 in func_3. 編輯 我想要這段代碼: 擴展為: 我意 ...

宏觀衛生只能在不同模塊中保護您嗎?

[英]Does macro hygiene only protect you in different modules?

至於朱莉婭0.4.2 我原以為結果是(1, 1, 2) 。 但是,如果我在另一個模塊中定義宏,它將按預期工作。 似乎衛生只是在符號前面加上模塊命名空間。 因此,宏擴展器不可能在第一種情況下區分不同的范圍。 這是預期的行為嗎? ...

Julia中的宏調用與宏定義環境

[英]Macro call vs macro definition environment in Julia

我試圖從Julia關於宏衛生的元編程文檔中的聲明中弄清楚。 該文件聲稱 Julia的宏擴展器通過以下方式解決了這些問題。 首先,宏結果中的變量分為本地變量或全局變量。 如果將變量分配給變量(而不是聲明為全局變量),聲明為局部變量或用作函數參數名稱,則將其視為局部變量。 否則,它 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM