ฉันวางแผนที่จะเขียน GolfScript ที่ได้รับการปรับปรุงสำหรับโปรแกรมที่สั้นกว่าซึ่งสามารถทำสิ่งต่างๆได้มากขึ้น นี่ไม่ใช่ความท้าทาย มันเป็นคำขอสำหรับข้อเสนอแนะและเคล็ดลับเกี่ยวกับสิ่งที่ฉันควรทำ (ดูแท็ก)
ฉันไม่แน่ใจว่าควรเป็น Community Wiki หรือไม่ หากคุณคิดเช่นนั้นให้ตั้งค่าสถานะสำหรับโมเดอเรเตอร์เพื่อแปลง :)
ภาษานี้จะคล้ายกับ GolfScript มาก มันยังคงเขียนในทับทิม อย่างไรก็ตามมันมีความแตกต่างเล็กน้อย:
- การใช้
`
เป็นตัวคั่นสตริงเนื่องจากเป็นอักขระที่ผิดปกติดังนั้นจึงจำเป็นต้องหลีกหนีน้อยกว่า (ตัวละครอื่นสามารถแทนที่ฟังก์ชั่นของมันเช่น#
(เพิ่มเติมในภายหลัง))\`
เพื่อหลบหนี backtick\\
เพื่อหลบหนี backslash และไม่มีลำดับ escape อื่น ๆ หากคุณต้องการขึ้นบรรทัดใหม่เพียงแค่ขึ้นบรรทัดใหม่ตามตัวอักษรที่แท้จริงในสตริง - การใช้รูบี้
Rational
สำหรับจุดลอยตัวที่แม่นยำซึ่งเป็นข้อบกพร่องสำคัญอย่างหนึ่งของ GolfScript - ความสามารถในการแปลงประเภทเป็นประเภทอื่น ตัวอย่างเช่นคุณสามารถแปลงบล็อกเป็นสตริง
- นิพจน์ทั่วไป
"..."
สร้างขึ้นอาจจะมี ผู้ประกอบการจะได้รับการโอเวอร์โหลดสำหรับพวกเขาเช่นกัน ตัวอย่างเช่น"\W"~{`Invalid: non-word character`}{`OK`}if
. จะดำเนินการโดยอัตโนมัติเมื่อผลักจากตัวแปรเช่นบล็อก - วัตถุไฟล์และวันที่เพื่อทำสิ่งต่าง ๆ ที่เป็นไปไม่ได้ใน GolfScript สิ่งเหล่านี้จะไม่มีตัวอักษร แต่จะมีฟังก์ชั่นสำหรับการเริ่มต้นพวกเขาเช่น
`file.txt`fl
(ชื่อของฟังก์ชั่นการทำไฟล์อาจเปลี่ยนแปลง) - อาจแฮช แต่ฉันไม่แน่ใจในอันนั้น ฉันควร?
- ฟังก์ชั่นตัวช่วยที่ต้องทำมากยิ่งขึ้น ตัวอย่างเช่น
`http://example.com`net
สำหรับการเข้าถึงเครือข่าย (อีกครั้งnet
ผู้ให้บริการอาจถูกเปลี่ยนชื่อ)rb
เพื่อดำเนินการสตริงเป็นรหัสทับทิม จะมีอีกมากมายเหล่านี้; ยินดีต้อนรับข้อเสนอแนะ - ไม่มีความคิดเห็นดังนั้นจึง
#
สามารถนำไปใช้อย่างอื่นได้ หากคุณต้องการความคิดเห็น`comment here`;
จะทำงานได้ดี (อาจจะ#
สามารถแทนที่`
ฟังก์ชั่นของ) - มันจะถูกเขียนใหม่อย่างสมบูรณ์ในลักษณะที่จะเพิ่มฟังก์ชั่นได้ง่ายขึ้นมาก โดยทั่วไปรหัสจะสามารถอ่านได้มากขึ้น (คุณเห็นแหล่ง GolfScript แล้วหรือยัง
:/
) - มันจะอยู่ใน Github ดังนั้นจึงสามารถทำงานร่วมกันได้ ฉันจะอนุญาตภายใต้ MIT หรืออะไรบางอย่าง
- ไม่มีการขึ้นบรรทัดใหม่ดังนั้น quines ที่โกงจึงทำงาน: P
และฉันแยกมันออกจากกันเพราะฉันคิดว่ามันเป็นการเปลี่ยนแปลงที่รุนแรงและเป็นประโยชน์มากที่สุด (ยกเว้นอาจเพิ่มจุดลอยตัว):
- มันจะมีฟังก์ชั่นทับทิมมากมายในตัว ตัวอย่างเช่น
shuffle
(ซึ่งอาจจะยากsf
) (ก่อนหน้านี้มี9 ตัวอักษร ),tr
(ก่อนหน้านี้14 ตัวอักษร ),sample
(sm
, ก่อนหน้านี้.,rand=
),flatten
(fl
, ก่อนหน้านี้ ???) เป็นต้น - มันจะถูกรุมเร้าเช่น Rebmu ตัวอย่างเช่นตอนนี้คุณสามารถทำได้
~:a0<{0a-}aIF
(ใช้ชื่อตัวแปรตัวอักษร) แทน~:$0<{0$-}$if
(เขียนทับฟังก์ชั่นการเรียงลำดับ) (ตัวอย่างจากที่นี่ ) โปรดทราบว่าวิธีนี้เป็นแบบไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กและไม่อนุญาตให้ใช้ตัวเลขในชื่อตัวแปร ในความคิดของฉันมันโอเคเพราะมันเป็นภาษากอล์ฟ: P - มันจะมีการดีบัก ฉันจะเพิ่มความสามารถในการจัดหาธงที่ระบุตัวคั่นอาเรย์ตัวคั่นองค์ประกอบ ฯลฯ เอาท์พุทตัวเลข (เหตุผลลอยหรือ int?) ก้าวผ่านคำแนะนำทีละครั้ง tokenizing และเอาท์พุทแต่ละโทเค็นแทนการเรียกใช้โปรแกรม เป็นต้น
ดังนั้นคำถามของฉันคือ: มีการปรับปรุงอะไร คุณคิดว่าฉันควรเพิ่มอะไร
ความคิดอื่น ๆ สำหรับเรื่องนี้ก่อนที่ฉันจะเริ่มเขียนโค้ดหรือไม่