คำถามติดแท็ก f#

F # เป็นภาษาเชิงวัตถุที่ใช้งานได้สั้นกระชับและมีประสิทธิภาพสำหรับ. NET ซึ่งช่วยให้คุณเขียนโค้ดง่ายๆเพื่อแก้ปัญหาที่ซับซ้อน

13
ฟังก์ชั่นเวลามีอยู่ในการตั้งโปรแกรมการทำงานอย่างไร
ฉันต้องยอมรับว่าฉันไม่รู้เกี่ยวกับการเขียนโปรแกรมฟังก์ชั่นมากนัก ฉันอ่านเกี่ยวกับมันจากที่นี่และที่นั่นและได้รู้ว่าในการเขียนโปรแกรมเชิงฟังก์ชันฟังก์ชั่นจะคืนค่าเอาต์พุตเดียวกันสำหรับอินพุตเดียวกันไม่ว่าจะเรียกใช้ฟังก์ชันกี่ครั้งก็ตาม มันเหมือนกับฟังก์ชันทางคณิตศาสตร์ที่ประเมินผลลัพธ์เดียวกันสำหรับค่าเดียวกันของพารามิเตอร์อินพุตที่เกี่ยวข้องในการแสดงออกของฟังก์ชัน ตัวอย่างเช่นพิจารณาสิ่งนี้: f(x,y) = x*x + y; // It is a mathematical function ไม่ว่าคุณจะใช้ไปกี่ครั้งf(10,4)ก็ตามคุณค่าของมันจะยังคงอยู่ตลอด104ไป ดังนั้นทุกที่ที่คุณเขียนf(10,4)คุณสามารถแทนที่ด้วย104โดยไม่ต้องเปลี่ยนค่าของการแสดงออกทั้งหมด คุณสมบัตินี้เรียกว่าการอ้างอิงโปร่งใสของการแสดงออก ตามที่ Wikipedia พูดว่า ( ลิงค์ ) ในทางกลับกันในฟังก์ชั่นรหัสค่าเอาท์พุทของฟังก์ชั่นขึ้นอยู่กับอาร์กิวเมนต์ที่ใส่เข้าไปในฟังก์ชั่นเท่านั้นดังนั้นการเรียกใช้ฟังก์ชัน f สองครั้งด้วยค่าเดียวกันสำหรับอาร์กิวเมนต์ x จะให้ผลลัพธ์ที่เหมือนกัน f (x) ทั้งสองครั้ง ฟังก์ชั่นเวลา (ซึ่งจะคืนค่าเวลาปัจจุบัน ) สามารถมีอยู่ในการตั้งโปรแกรมการทำงานหรือไม่ ถ้าใช่แล้วมันจะมีอยู่ได้อย่างไร? มันไม่ได้ละเมิดหลักการของฟังก์ชั่นการเขียนโปรแกรมหรือไม่? มันละเมิดความโปร่งใสในการอ้างอิงซึ่งเป็นหนึ่งในคุณสมบัติของการเขียนโปรแกรมการทำงาน (ถ้าฉันเข้าใจถูกต้อง) หรือถ้าไม่, แล้วเราจะรู้เวลาปัจจุบันในการโปรแกรมเชิงฟังก์ชันได้อย่างไร?

15
ฟังก์ชั่นการเขียนโปรแกรม GUI สามารถทำได้หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันเพิ่งเจอข้อผิดพลาด FP (พยายามเรียนรู้ Haskell) และฉันก็ประทับใจกับสิ่งที่ฉันเห็นมามาก (ฟังก์ชั่นชั้นหนึ่งการประเมินที่ขี้เกียจและสารพัดอื่น ๆ ) ฉันยังไม่มีความเชี่ยวชาญ แต่ฉันได้เริ่มเข้าใจแล้วว่าเหตุผล "ตามหน้าที่" ง่ายกว่าเหตุผลสำหรับอัลกอริธึมพื้นฐาน (และฉันมีปัญหาในการกลับไปที่ที่ฉันต้องทำ) พื้นที่หนึ่งที่ FP ในปัจจุบันดูเหมือนจะค่อนข้างแบนอย่างไรก็ตามคือการเขียนโปรแกรม GUI วิธี Haskell ดูเหมือนว่าจะห่อชุดเครื่องมือ GUI ที่จำเป็น (เช่น GTK + หรือ wxWidgets) และใช้บล็อก "do" เพื่อจำลองสไตล์ที่จำเป็น ฉันไม่ได้ใช้ F # แต่ความเข้าใจของฉันคือมันใช้ OOP กับ. NET class เห็นได้ชัดว่ามีเหตุผลที่ดีสำหรับเรื่องนี้ - การเขียนโปรแกรม GUI ปัจจุบันเป็นเรื่องของ …

9
การใช้ F # ในด้านใดบ้างที่เหมาะสมกว่า C # [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ในช่วงไม่กี่ปีที่ผ่านมา F # ได้พัฒนาเป็นหนึ่งในภาษาที่รองรับอย่างเต็มที่ของ Microsoft โดยใช้ความคิดมากมายที่บ่มเพาะใน OCaml, ML และ Haskell ในช่วงหลายปีที่ผ่านมา C # ได้ขยายคุณสมบัติของวัตถุประสงค์ทั่วไปโดยการแนะนำคุณสมบัติภาษาที่ใช้งานได้มากขึ้น: LINQ (ความเข้าใจในรายการ), แลมบ์ดา, การปิด, ผู้แทนนิรนามและอื่น ๆ ... กำหนดให้ C # ใช้คุณสมบัติการทำงานเหล่านี้และอนุกรมวิธานของ F # เป็นภาษาหน้าที่ไม่บริสุทธิ์ (ช่วยให้คุณสามารถเข้าถึงไลบรารีเฟรมเวิร์กหรือเปลี่ยนสถานะที่ใช้ร่วมกันเมื่อเรียกใช้ฟังก์ชันหากคุณต้องการ) มีความคล้ายคลึงกันระหว่างสองภาษา ขั้วตรงข้ามของตัวเองเน้นหลัก ฉันสนใจรุ่นที่ประสบความสำเร็จที่ใช้สองภาษาเหล่านี้ในโปรแกรมพูดได้หลายภาษาของคุณและพื้นที่ภายในซอฟต์แวร์การผลิต (เว็บแอพ, แอพไคลเอนต์, แอพเซิร์ฟเวอร์) ที่คุณเขียนเป็น F # ในปีที่ผ่านมา เขียนใน C #
210 c#  f# 

3
เริ่มต้นด้วย F # [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันจะเข้าไปเกี่ยวกับการเขียนโปรแกรม F # ได้อย่างไร ตัวอย่างแบบเริ่มต้นที่ดีอะไรบ้างที่จะเรียนรู้ภาษาหรือเรียนรู้เกี่ยวกับข้อได้เปรียบบางอย่างเหนือภาษาอื่น ๆ ฉันต้องการเครื่องมืออะไร (เช่น Windows, Visual Studio, ... )
139 f# 

5
อะไรคือความแตกต่างหลักระหว่าง Haskell และ F #? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อค คำถามนี้และคำตอบถูกล็อกเนื่องจากคำถามไม่ตรงประเด็น แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ยังไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันค้นหาบนอินเทอร์เน็ตเพื่อเปรียบเทียบระหว่างF #และHaskellแต่ไม่พบอะไรที่ชัดเจน อะไรคือความแตกต่างหลักและเหตุใดฉันจึงต้องการเลือกอย่างใดอย่างหนึ่ง

1
ทำไมรหัส F # ช้าจัง
การใช้ Levenshtein ใน C # และ F # เวอร์ชัน C # เร็วกว่า 10 เท่าสำหรับสองสตริงประมาณ 1,500 ตัวอักษร C #: 69 ms, F # 867 มิลลิวินาที ทำไม? เท่าที่ฉันบอกได้พวกเขาทำสิ่งเดียวกันหรือไม่? ไม่สำคัญว่าจะเป็นรุ่นหรือรุ่นแก้ไขข้อบกพร่อง แก้ไข: หากใครมาที่นี่เพื่อค้นหาการใช้งานแก้ไขระยะทางโดยเฉพาะถือว่าเสีย รหัสทำงานที่นี่ C # : private static int min3(int a, int b, int c) { return Math.Min(Math.Min(a, b), c); } public static …
127 c#  performance  f#  inline 

5
F # เปลี่ยน OCaml [ปิด]
ปิด. คำถามนี้ไม่เป็นไปตามหลักเกณฑ์กองมากเกิน ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ F # มาจาก OCaml แต่มีรายการหลักอะไรบ้างที่ขาดหายไปหรือเพิ่มเข้าไป? โดยเฉพาะฉันอยากรู้ว่าแหล่งข้อมูลสำหรับการเรียนรู้ OCaml นั้นมีประโยชน์กับคนที่ต้องการเรียนรู้ F # หรือไม่
126 f#  ocaml  functor 

4
ความแตกต่างระหว่างพับและลด?
พยายามเรียนรู้ F # แต่มีสับสนเมื่อพยายามที่จะแยกแยะความแตกต่างระหว่างการพับและลด การพับดูเหมือนจะทำสิ่งเดียวกันแต่ใช้พารามิเตอร์พิเศษ มีเหตุผลอันชอบธรรมที่ทำให้ฟังก์ชันทั้งสองนี้มีอยู่หรือมีขึ้นเพื่อรองรับผู้ที่มีภูมิหลังที่แตกต่างกัน? (เช่น: สตริงและสตริงใน C #) นี่คือข้อมูลโค้ดที่คัดลอกมาจากตัวอย่าง: let sumAList list = List.reduce (fun acc elem -> acc + elem) list let sumAFoldingList list = List.fold (fun acc elem -> acc + elem) 0 list printfn "Are these two the same? %A " (sumAList [2; 4; 10] …


4
แนวทางที่ดีที่สุดในการออกแบบไลบรารี F # สำหรับการใช้งานทั้ง F # และ C #
ฉันกำลังพยายามออกแบบห้องสมุดใน F # ห้องสมุดที่ควรจะเป็นมิตรสำหรับการใช้งานจากทั้ง F # และ C # และนี่คือจุดที่ฉันติดอยู่เล็กน้อย ฉันสามารถทำให้ F # เป็นมิตรหรือฉันสามารถทำให้ C # เป็นมิตรได้ แต่ปัญหาคือจะทำให้เป็นมิตรกับทั้งคู่ได้อย่างไร นี่คือตัวอย่าง ลองนึกภาพว่าฉันมีฟังก์ชันต่อไปนี้ใน F #: let compose (f: 'T -> 'TResult) (a : 'TResult -> unit) = f >> a สามารถใช้งานได้อย่างสมบูรณ์แบบจาก F #: let useComposeInFsharp() = let composite = compose (fun item -> …
113 c#  f# 

7
การพัฒนา F # และการทดสอบหน่วย?
ฉันเพิ่งเริ่มใช้ F # ซึ่งเป็นภาษาแรกที่ใช้งานได้ ฉันทำงานกึ่งเดียวกับ C # และสนุกมากกับการที่ F # ทำให้ฉันคิดใหม่ว่าฉันเขียนโค้ดอย่างไร สิ่งหนึ่งที่ฉันพบว่ามีความสับสนเล็กน้อยคือการเปลี่ยนแปลงในกระบวนการเขียนโค้ด ตอนนี้ฉันใช้ TDD ใน C # มาหลายปีแล้วและรู้สึกขอบคุณมากที่มีการทดสอบหน่วยเพื่อให้ทราบว่าฉันอยู่ที่ไหน จนถึงตอนนี้กระบวนการของฉันกับ F # คือการเขียนฟังก์ชั่นบางอย่างเล่นกับคอนโซลแบบโต้ตอบจนกว่าฉันจะ "มีเหตุผล" แน่ใจว่ามันใช้งานได้และปรับแต่งและรวมเข้าด้วยกัน สิ่งนี้ใช้ได้ดีกับปัญหาเล็ก ๆ เช่นโครงการออยเลอร์ แต่ฉันนึกไม่ถึงว่าจะสร้างสิ่งที่ใหญ่ขนาดนั้นได้ ผู้คนเข้าถึงการทดสอบหน่วยและสร้างชุดทดสอบสำหรับโปรแกรม F # ได้อย่างไร มีเทียบเท่ากับ TDD หรือไม่? คำแนะนำหรือความคิดใด ๆ ที่ได้รับการชื่นชม

6
เหตุใดฟังก์ชันใน Ocaml / F # จึงไม่เรียกซ้ำตามค่าเริ่มต้น
เหตุใดฟังก์ชันใน F # และ Ocaml (และอาจเป็นภาษาอื่น ๆ ) จึงไม่เรียกใช้ซ้ำตามค่าเริ่มต้น กล่าวอีกนัยหนึ่งว่าเหตุใดนักออกแบบภาษาจึงตัดสินใจว่าควรกำหนดให้คุณพิมพ์recคำประกาศอย่างชัดเจนเช่น: let rec foo ... = ... และไม่ให้ฟังก์ชันเรียกซ้ำตามค่าเริ่มต้น? ทำไมต้องมีrecโครงสร้างที่ชัดเจน?
105 f#  recursion  ocaml 

1
MbUnit ภายใต้ Linux ใช้ภายในโครงการ F #?
ฉันพยายามถามสิ่งนี้ในรายชื่อผู้ใช้ Gallio แต่คำถามไม่ปรากฏ (Google Groups แจ้งว่าโพสต์สำเร็จ) ฉันคิดว่ารายการอาจถูกกลั่นกรองโดยคนที่ไม่ได้อ่านอีเมลของเขาบ่อยนัก :-) เมื่อเห็น SO มีแท็กสำหรับทั้ง Gallio และ MbUnit ฉันคิดว่ามันคุ้มค่าที่จะถามที่นี่ ฉันเห็นMbUnitหน้าแรกกล่าวว่าพวกเขากระตือรือร้นที่จะรักษาความเข้ากันได้ของโมโน นอกจากนี้ยังมีโพสต์อายุ > 1 ปีเกี่ยวกับผู้ใช้ Gallio ที่บอกว่ามันไม่ทำงานภายใต้ Linux โครงการที่ฉันต้องการทดสอบการคอมไพล์ภายใต้ Mono ถ้าฉันลบParallelizableแอตทริบิวต์ ฉันสามารถเปิดGallioแผงควบคุมภายใต้ Linux แต่ไม่ใช่ Icarus หรือ Echo มีวิธีMbUnitการทดสอบภายใต้ Linux หรือไม่? สิ่งที่ใช้บรรทัดคำสั่ง (เช่นGallio.Echo) และไม่จำเป็นต้องใช้ Monodevelop จะเป็นประโยชน์อย่างยิ่ง
104 ubuntu  f#  mono  mbunit  gallio 

6
ฉันจะใช้การเขียนโปรแกรมเชิงฟังก์ชันในโลกแห่งความเป็นจริงได้อย่างไร? [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้นเท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ภาษาที่ใช้งานได้ดีเพราะหลีกเลี่ยงข้อบกพร่องโดยการกำจัดสถานะ แต่ยังเป็นเพราะสามารถขนานกันได้โดยอัตโนมัติสำหรับคุณโดยที่คุณไม่ต้องกังวลกับการนับเธรด ในฐานะนักพัฒนา Win32 ฉันสามารถใช้ Haskell สำหรับ dll ของแอปพลิเคชันของฉันได้หรือไม่? และถ้าฉันทำจะมีข้อได้เปรียบที่แท้จริงสำหรับฉันโดยอัตโนมัติหรือไม่? ถ้าเป็นเช่นนั้นอะไรที่ทำให้ฉันได้เปรียบคอมไพเลอร์นี้ F # ขนานฟังก์ชันที่คุณเขียนในหลายคอร์และซีพียูให้คุณโดยอัตโนมัติหรือไม่? คุณเคยเห็นจำนวนเธรดในตัวจัดการงานเพิ่มขึ้นหรือไม่? โดยทั่วไปคำถามของฉันคือฉันจะเริ่มใช้ Haskell ในทางปฏิบัติได้อย่างไรและฉันจะเห็นประโยชน์บางอย่างจริงหรือไม่ถ้าฉันทำ

10
องค์ประกอบของ Haskell (.) กับตัวดำเนินการไปข้างหน้าของ F # (|>)
ใน F # การใช้ตัวดำเนินการเดินหน้าท่อ|>เป็นเรื่องปกติ อย่างไรก็ตามใน Haskell ฉันเคยเห็นแค่การใช้องค์ประกอบของฟังก์ชัน(.)เท่านั้น ฉันเข้าใจว่ามันเกี่ยวข้องกันแต่มีเหตุผลด้านภาษาหรือไม่ที่ไม่ได้ใช้ไพพ์ฟอร์เวิร์ดใน Haskell หรือเป็นอย่างอื่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.