28 พฤษภาคม 2547

POP3/SSL

เมื่อวานกว่าจะเซ็ต mail server ของแล็บ ให้ใช้ POP3/SSL ได้ เสียเวลาไปครึ่งวัน เพราะมัวแต่ลองโน้นลองนี่อยู่ แต่พอเสร็จแล้ว ก็เลยไปเขียนวิธีทำไว้ที่ LTN หลังจากไม่ได้เขียนเพิ่มมานาน http://linux.thai.net/plone/Members/cholwich/popssl

ตอนเย็นชาวคณะชักชวนกันไปดูหิ่งห้อย ในสวนสาธารณะแถวมินะมิเซ็นหริ มีไม่เยอะเท่าไหร่ น่าจะประมาณร้อยตัวได้ ดูแล้วได้ความรู้สึกแปลกดี เพราะสมัยก่อนอยู่บ้านมีให้เห็นจนเบื่อ สมัยนี้ไม่รู้ยังจะมีหรือเปล่าเพราะไม่ค่อยได้อยู่บ้านเท่าไหร่ แต่น่าจะน้อยลงแล้วล่ะมั้ง ตอนไปเมืองไทยคงจะต้องมีชักชวนกันไปดูหิ่งห้อยแบบนี้เหมือนกัน เพราะนับวันจะกลายเป็นของแปลก

26 พฤษภาคม 2547

OpenBSD กับ Sparc64

โพสต์อันที่แล้วเสร็จ ก็เหลือบไปเห็นมีคนรีวิว OpenBSD กับ Sparc64 ที่ OSNews ท่าทางก็น่าสนใจดีนะ OpenBSD ปลอดภัยดีด้วย เหมาะจะเอามาทำ server แต่ช้าไปแล้ว เพราะลง gentoo ไปได้ค่อนตัวแล้ว ขี้เกียจกลับลำแล้ว

Linux บน Sun Blade 100

ที่แล็บมี Sun Blade 100 อยู่ 2 เครื่องใช้เป็น server ขนาดเล็ก (ที่จริงอาจจะไม่เหมาะเท่าไหร่ เพราะออกแบบมาให้เป็น workstation มากกว่า) ปกติใช้ Solaris 9 อยู่ แต่พบความลำบากในเรื่องการลงซอฟท์แวร์ เพราะส่วนใหญ่ไม่ได้ใช้ซอฟท์แวร์ของซัน แต่ใช้พวก FOSS เลยทำให้มีปัญหาบางครั้งเวลาคอมไพล์ วันนี้ว่างๆ (ที่จริงก็ไม่ว่างทีเดียวหรอก แต่มีเหตุจากข้างล่าง) เลยกะว่าจะลง Linux ใช้ซะเลยดีกว่า จะได้สะดวกในการจัดการ เพราะเครื่องอื่นที่เหลือเป็นพีซี ใช้ลินุกซ์หมดแล้ว ก็เลยเลือกลินุกซ์มาสองตัว

  • debian - ก่อนจะลงลองอ่านหลายๆ ที่ เขาบอกกันว่าจะต้อง flash prom ซะก่อน ก็เลยจัดการลง prom ตาม patch ของ sun ซึ่งลำบากพอควร เพราะต้องเปิดเครื่องมาเปลี่ยนจัมเปอร์ให้สามารถเขียน prom ได้ก่อน แต่ทำตามซันก็ไม่มีปัญหาอะไร ปัญหามาเกิดตอนบูตด้วย woody แผ่นแรก ยังไม่ทันไรเลย เจอ error ว่า Fast Data Access MMU Miss ไม่รู้คืออะไรเหมือนกัน แต่เริ่มถอดใจ เอางี้ล่ะกัน ลอง gentoo ก่อนดีกว่า เลยเอา 2004.1 มาลอง
  • gentoo - เอา livecd ของ sparc64 มา ทุกอย่างราบรื่น งั้นเปลี่ยนใจมาใช้ gentoo เลยล่ะกัน จริงๆ ไม่ค่อยอยากใช้ เพราะเครื่องนี้ไม่เร็วนัก คงต้องเสียเวลาคอมไพล์นาน สุดท้ายเลือกลงจาก stage3 เพราะกลัวว่าจะต้องรอหลายวัน ตอนนี้กำลังคอมไพล์ kernel 2.6.6 อยู่ไม่รู้จะเป็นยังไงบ้าง หวังว่าคงโอเค

และแล้วเขาก็จากไป

ที่ว่าจากไปนี่หมายถึง server นะครับ ไม่ได้หมายถึงบุคคลหรือสัตว์เลี้ยงแต่อย่างใด เกิดจากที่แล็บมี server อยู่เครื่องหนึ่งเดิมใช้เป็นทั้ง dns และ mail server มีความสำคัญยิ่งยวด ต่อมาเครื่องเริ่มเก่า แล้วก็ยังมีปัญหากับพัดลมของ cpu ซึ่งทำให้เครื่องแฮงค์ไปเฉยๆ บ่อยมาก บทบาทหน้าที่จึงถูกลดลง เป็นเพียงเครื่องสำรองในกรณีที่เครื่องที่ใช้ในปัจจุบันมีปัญหา วันนี้เห็นเครื่องมันค้างอีก เลยจัดการบูตใหม่ ปรากฏว่ามีปัญหาที่ข้อมูลใน prom ทำให้ไม่สามารถบูตเครื่องได้ เป็นอันว่าเขาได้จากไปเป็นที่แน่นอนแล้ว (อาจารย์คงไม่ซ่อมให้แล้วล่ะ เพราะค่าซ่อมแพงพอๆ กับซื้อ pc ใหม่มาทำ server ได้เลย)

25 พฤษภาคม 2547

.NET อีกแล้ว

ช่วงนี้ดูเหมือนจะต้องยุ่งเกี่ยวกับ .NET บ่อยๆ เมื่อวานคุยรุ่นน้องที่แล็บแล้วเห็นว่าอยากได้ line control สำหรับ ลากเส้นเชื่อมระหว่าง control อื่นๆ เดิมใช้วิธีลากเส้นเองบน form แล้วมีปัญหาเรื่อง paint เพราะไม่รู้ตรงไหนโดนทับบ้าง ก็เลยต้องเขียนเส้นใหม่หมดทุกรอบ ทำให้การตอบสนองของโปรแกรมช้า ลองไปนั่งอ่านๆ เว็บดู สุดท้ายได้วิธีทำ custom control มา เพียงแค่เขียน onPaint เอง เลยลองทำดู แต่ก่อนจะลากเส้น ต้องคำนวณอะไรเพิ่มนิดหน่อย เพราะ control แต่ละตัวจะมีพิ้นที่เป็นสี่เหลี่ยมกำหนดโดย Top, Left, Width, Height แต่เวลากำหนดตำแหน่งของเส้นอยากกำหนดจุดปลายเป็น (x1,y1) กับ (x2,y2) ก็เลยต้องจับ control เลื่อนไปมา พร้อมกับเปลี่ยนขนาดไปด้วย ตอนนี้ขอแก้อีกนิดหน่อย ถ้าใช้ได้ดีเมื่อไหร่จะเอามาเผยแพร่

เล่นกับรูป

หลังจากคุยกับรุ่นน้อง แล้วก็ลองแต่งรูปที่ถ่ายมาด้วย The GIMP ปรับ level กับ curve ดู (ตามคำแนะนำ) ก็ได้รูปออกมาร้อนแรงขึ้น ดูแปลกตาไปอีกแบบ

23 พฤษภาคม 2547

กุหลาบ

วันนี้ไปถ่ายรูปที่ Expo Park มาอีกแล้ว อากาศก็เป็นใจ ช่วงนี้กุหลาบกำลังบาน เลยได้ลอง close-up filter ที่เพิ่งซื้อมาใหม่ อืม...ใช้ได้ดีสมราคา (ไม่แพงจนเกินไป) แถมเป็นการออกกำลังกายด้วย เพราะกว่าจะขี่จักรยาน+เดินไปถึง ก็เริ่มเหนื่อยแล้ว

เอาไว้อีกซักสองอาทิตย์ค่อยไปใหม่ เพราะใกล้เวลา "อะจิไซ" จะบานแล้ว ไปถ่ายแต่กุหลาบนี่ก็ดีนะ เพราะอยู่นอกสวนไม่ต้องเสียค่าผ่านประตู ประหยัดไป 250 เยน หุๆๆ

21 พฤษภาคม 2547

.NET

เมื่อวานจะช่วยรุ่นพี่เขียนโปรแกรมเล็กๆ อันหนึ่ง แต่เขาใช้วินโดว์อยู่ ก็คิดไว้ว่าคงต้องใช้ Java เพราะจะเขียน Perl หรือ Python ให้ไปก็คงใช้ลำบาก พอดีนึกได้ว่ามีเครื่องวินโดว์อยู่เครื่องหนึ่งลง Visual Studio .NET เอาไว้ เลยไปลองใช้ C# ดู หลังจากมั่วไปมั่วมาชม.กว่าๆ ก็ได้โปรแกรมออกมา แล้วก็เกิดความรู้สึกว่า มันเหมือน Java ยังกับแกะ ต่างกันอย่างเดียวคือ class library ซึ่งก็คล้ายๆ กันอยู่ดีแหละ แล้วอย่างนี้ Java จะสู้ได้ไหมเนี้ย

ที่จริงก็ได้แตะๆ พวก .NET มาตั้งแต่ปลายปีที่แล้ว เพราะเจ้ารุ่นน้องคนหนึ่งใช้ VB.NET แล้วชอบมาถามโน้นถามนี่ บ่อยๆ แต่ VB.NET นี่ดีขึ้นเยอะเลยนะ ตัดพวก syntax ประหลาดออกไป แถมยังต้องประกาศ type/class ให้แน่นอนก่อนใช้ ทำให้ดูเป็นผู้เป็นคนขึ้นเยอะ แต่ก็ทำให้ต้องมานั่งนึกว่า เราเป็นพวกหัวเก่าหรือเปล่าหว่า อย่าง VB หรือ Perl ที่คนอื่นๆ เขาว่าเขียนง่ายๆ กัน เรากลับรู้สึกว่ามันยาก มันสับสน เพราะไม่รู้ตัวแปรเก็บอะไรไว้แน่ แบบไม่มั่นใจ เลยพาลให้ไม่ชอบ

20 พฤษภาคม 2547

Prolog กับ Internal Data Base

ด้วยความที่อยากใช้ Prolog ทั้งหมดในโปรแกรมที่กำลังเขียนอยู่ เนื่องจากโปรแกรมที่เขียนอยู่ ต้องเก็บข้อมูลจำนวนมาก เดิมก็เก็บไว้ในดาต้าเบสของ Prolog โดยตรง ด้วย assert/1 กับ retract/1 ผลปรากฏว่าโปรแกรมที่ได้ทำงานช้ามาก สุดท้ายเลยต้องจำใจแยกส่วนนี้ออกไปเป็น C แล้วเขียน library มาเชื่อมกับ Prolog วันก่อนกลับมาพยายามแก้ปัญหานี้ใหม่ ลองนั่งอ่านคู่มือการใช้ Prolog ไปเรื่อยๆ (ผมใช้ YAP) ก็เจอ predicate ที่เกี่ยวกับ internal data base มีคำอธิบายไว้สั้นๆ ว่า เอาไว้เก็บข้อมูลที่ต้องการให้เป็น global ใช้แทน assert/retract ได้ แต่ทำงานเร็วกว่า ประหยัดพื้นที่กว่า แต่มีเงื่อนไขว่าจะต้องมี key กำกับ term ทุกตัวที่จะเก็บ (คงใช้ hash table แหละ ส่วนโปรแกรมเราก็มี key อยู่แล้ว ไม่ยาก)

สุดท้าย อยากรู้ว่าเร็วกว่าแค่ไหน เลยลองเอาเขียนโปรแกรมมาเทียบกัน ลองเก็บ term จำนวน 100,000 ตัว แล้ว ดึงกลับมา โดยใช้สองวิธี ปรากฏว่า วิธีปรกติ (assert/retract) ใช้เวลา 5:52 นาที ถ้าใช้ idb จะลดเหลือ 2:52 นาที เร็วกว่ากันเยอะแฮะ แต่ก็มีข้อจำกัดแหละ ถ้าใช้ idb ก็ไม่สามารถ unify หรือ query หาค่าของตัวแปรแบบปกติได้ ซึ่งเราไม่ต้องการอยู่แล้ว (ที่จริงถ้าเขียน predicate อีกตัวมาครอบไว้ ก็พอจะทำได้เหมือนกันแหละ)

18 พฤษภาคม 2547

ปลอดโปร่ง

วันนี้ดูท่าจะเป็นวันที่รู้สึกปลอดโปร่งที่สุดในช่วงนี้ เพราะลองเอา gotmail มาลงอีกรอบ แล้วใช้งานได้ดี (เดิมเคยลอง แล้วใช้ไม่ได้เพราะ hotmail เปลี่ยนวิธี login) ทำให้สามารถโหลดเมลเก่าๆ ทั้งหมดมาเก็บไว้ได้ แล้วต่อไปก็ยังสามารถดึงเมลมาอ่านได้ทันที ไม่ต้องเข้าเว็บให้ยุ่งยาก เป็นครั้งแรกในรอบ 5 ปี (ตั้งแต่มาอยู่ญี่ปุ่น) ที่เนื้อที่ใน hotmail เป็นศูนย์ ต่อไปคงจะเช็คเมลที่ hotmail ได้ซักที ปกติไม่ค่อยเช็คเพราะมีแต่ Junk แล้วก็เบื่อที่จะใช้ web ซึ่งยุ่งยาก ใช้ thunderbird สะดวกกว่ากันเยอะ

แก้ปัญหารางวัลหนึ่งล้านเหรียญ

เมื่อกี้ไปฟัง colloquium (แปลเป็นไทยว่าอะไรดีเนี้ย สัมมนา?) ประจำเดือนของภาควิชามา มีคุยกันเรื่องสมการของไหล (ไม่ค่อยรู้เรื่องเท่าไหร่) แต่สุดท้ายอาจารย์ที่มาบรรยายให้ฟัง พูดถึง Millennium Problems ที่จัดโดย Clay Mathematics Institute ตั้งแต่ปี 2000 สถาบันนี้เขาประกาศ จะให้รางวัลมูลค่าหนึ่งล้านเหรียญ แก่นักคณิตศาสตร์ที่สามารถไขความลับของสมการ Navier-Stokes ซึ่งเกี่ยวกับของไหลได้

นอกจากนี้พอดูๆ ไป ก็เจอปัญหาเกี่ยวกับ P vs NP ด้วย มีปัญหาให้หาวิธีการลื่นๆ (slick method) ที่สามารถเล่นเกม Minesweeper ได้ (เห็นว่าพิสูจน์ได้แล้วว่าเป็น NP-Complete) อ่านๆ ไปก็ อืมๆ เราคงไม่มีสิทธิ์

17 พฤษภาคม 2547

ต้มยำกุ้ง

เมื่อวานมีโอกาสได้ไปเผยแพร่ความเป็นไทยเล็กน้อย เนื่องจากคุณเลขา(ของอาจารย์) ชวนไปทานข้าวที่บ้าน นักเรียนต่างชาติ(ไทยกับฟิลิปปินส์) ก็เลยทำอาหารของชาติตัวเองไป ทำต้มยำไปเพราะมีผัดไทยโดยพี่ป๊อบและลูกตาลแล้ว พยายามให้เผ็ดน้อยที่สุดเพราะลูกของเลขายังเด็กอยู่ แต่ด้วยความเคยชินก็เลยใส่น้ำพริกเผาไปสองช้อน ไม่ใส่พริกขี้หนู แต่สุดท้ายก็ยังเผ็ดเกินไปอยู่ดี :) แต่ที่จริงที่ทำต้มยำไปเนี้ย เป็นการเผยแพร่หรือสร้างความสับสนในวัฒนธรรมไทยก็ไม่รู้ เนื่องจากคนญี่ปุ่นส่วนใหญ่รู้จักอาหารไทยอยู่อย่างเดียว คือ ต้มยำกุ้ง (ต้องมีกุ้งด้วยนะ ต้มยำเฉยๆ ไม่รู้จัก) แล้วเรายิ่งทำไปดูเหมือนจะทำให้คนญี่ปุ่นยิ่งคิดว่าต้มยำกุ้งเป็นซุปที่คนไทยต้องกินทุกมื้อ เหมือนกับมิโซะชิหรุของญี่ปุ่น เลยต้องอธิบายไปหน่อย ไม่เหมือนกันนะ เราไม่ได้กินทุกมื้อหรอก ที่บ้านก็ไม่ค่อยทำกินเองด้วย

14 พฤษภาคม 2547

bibtex2html

เมื่อเย็น (วันศุกร์) ต้องกลับมายุ่งกับ bibtex และ html อีกแล้ว เพราะมีเสียงเรียกร้อง (และสั่งการ) ว่าเว็บที่ทำไป เอาเปเปอร์มาเรียงเป็นพรืด ดูลำบาก น่าจะแบ่งตามปีและแยกประเภทด้วย ตอนแรกก็กะว่าจะลองอ่าน ocaml แล้วแก้เองซักตั้ง แต่ก่อนจะแก้ลองหาโปรแกรมอื่่นๆ ดูอีกที เลยไปเจอ bibtex2html อีกตัวหนึ่ง เขาเขียน python มาแปลง bibtex เป็น bibtexml ซึ่งเป็น xml แล้วค่อยเอา xslt มาแปลงให้เป็น html อีกที มีไฟล์ .xsl มาให้เสร็จเลย เป็นอันว่าเข้าทาง ลง xerces กับ xalan (บน gentoo นี่ลงง่ายดีแฮะ แถมมี java-config มาช่วยกำหนด classpath ให้ด้วย) แล้วก็นั่งแก้อยู่ชม.กว่าๆ ก็ได้ html ออกมาสมใจอาจารย์ ดูๆ ไปแล้ว ทำทุกอย่างให้เป็น xml หมดนี่ก็ดีเหมือนกันนะ จะแก้จะแปลงอะไรก็ใช้ xslt+xpath เอา เร็วดี

Opera 7.5

อ่านข่าวจาก TLWG ว่า Opera ออกเวอร์ชันใหม่ สำหรับลินุกซ์ เลยไปเอามาลอง เวลาลงก็ไม่ยาก ถึงแม้ว่าจะใช้ Gentoo เพราะมี script เตรียมไว้ให้แล้ว ลองเล่นดู (หลังจากที่ไม่ได้ใช้ opera มานาน) ก็ใช้งานง่ายดี ใช้เป็น mail/news client ได้ด้วย (เพิ่งรู้) แถมใช้พวก Javascript ของ IE ได้ด้วย banner ก็ไม่ใหญ่จนเกินไป สรุปว่าดี แต่ยังรู้สึกไม่ชินเพราะใช้ moz มานาน ถ้าถูกกว่านี้อีกหน่อยก็น่าซื้อนะ แหะๆๆ $39 แพงไปหน่อย

Unicode

เมื่อวานคุยกับรุ่นน้องเรื่องการทำ index ภาษาญี่ปุ่น คุยกันเรื่องจุดอ่อนของภาษาละแวกนี้ ที่ใช้ตัวอักษรจีน คือ ไม่สามารถเรียงคำตามเสียงอ่านได้ เพราะไม่รู้ว่าอ่านว่าอะไรกันแน่ ดังนั้นเวลากรอกข้อมูลชื่อ ก็เลยจะต้องให้ช่วยกรอกคำอ่านไปด้วย (ชื่อคนญี่ปุ่นนี่แหละปัญหาใหญ่ เพราะไม่รู้ว่าอ่านว่าอะไรแน่ กำหนดกันตามใจพ่อแม่เป็นส่วนใหญ่) คุยไปคุยมา ก็เลยวกไปถึงเรื่องรหัส ทำให้รู้ว่ารหัสตัวคันจิ (อักษรจีน) ที่กำหนดโดย JIS เขาจะเรียงตามเสียงอ่าน ดังนั้นถ้าเรียงตามรหัสก็จะเรียงตามเสียงได้ถูกต้องระดับหนึ่ง แต่ไม่ทั้งหมด เพราะตัวหนึ่งอ่านได้หลายแบบ แต่ที่นี้ต่อไปถ้าจะใช้ unicode เขาเอาตัวคันจิที่ใช้ในจีน ญี่ปุ่น เกาหลี ไปรวมกันเป็น CJK Ideograph ไม่รู้เรียงกันยังไง แต่คิดว่าคงไม่เรียงตามเสียงอ่านของญี่ปุ่นเหมือน JIS แล้วล่ะ ยิ่งพอดูๆ ตาราง unicode ไป ก็เกิดความประหลาดใจ ว่าทำไมตัวอักษรเกาหลีถึงสามารถยึดพื้นที่ได้เยอะมาก คือตัวอักษรเกาหลี แม้ว่าจะเอาตัวเป็นขีดๆ กลมๆ มาผสมกัน จนดูเหมือนตัวอักษรจีน แต่ลักษณะพื้นฐานเป็นเหมือนพยัญชนะกับสระแบบภาษาไทย คือเป็นไปตามกฎ ทำไมเขาไม่ทำ render engine แบบภาษาอื่นๆ แต่ใช้วิธีสร้างตาราง แล้วสร้างตัวอักษรทุกกรณีที่เป็นไปได้ ยึดตาราง unicode ไปตั้งเยอะ ขนาดพวกตัวอักษรเทวนาครี หรืออาหรับที่ผมรู้สึกว่ามีกฎซับซ้อนกว่า เขาก็ยังพยายาม render กันเลย คงเป็นเพราะ unicode พยายามยึดมาตรฐานเดิมของแต่ละประเทศล่ะมั้ง ว่ากันจริงๆ ตัวคันจิ ก็พอจะ render ได้นะ คงลำบากหน่อย แต่ตัวอักษรเกาหลีผมว่าวิธีเขียนก็ไม่ยุ่งยาก แถมเวลาอินพุตเขาก็พิมพ์เข้าไปเป็นส่วนๆ อยู่แล้วด้วย

13 พฤษภาคม 2547

Functional Programming

เมื่อวานบังเอิญต้องใช้โปรแกรม bibtex2html เพื่อทำเพจของห้องแล็บ หลังจากโหลดซอร์สมา พอสั่ง ./configure ก็เกิดอาการอึ้งเล็กน้อย เพราะมันต้องการโปรแกรม ocamlc สำหรับคอมไพล์ เลยทำให้รู้จักภาษาคอมพิวเตอร์อีกภาษาหนึ่ง คือ ocaml ที่จริงไม่ใช่ภาษาหรอก เขาบอกว่า เป็นสำเนียงหนึ่งของภาษา ML (Meta Language) ซึ่งเป็น functional programming language (บังเอิญ คนเขียนโปรแกรมนี้ ทำวิจัยเกี่ยวกับ programming language อยู่ก็เลยใช้ภาษานี้ อย่างไรก็ดีโปรแกรมนี้ใช้งานได้ดีทีเดียว)

พอเห็นภาษา ocaml ก็เลยทำให้อยากรู้ว่ามันจะต่างจาก prolog ที่เราใช้อยู่ยังไง เลยลองอ่าน tutorial แล้วเลยลองเขียนฟังก์ชัน merge สำหรับ merge sort ดู (บังเอิญเขามีตัวอย่าง quick sort ให้ดู) ได้ฟังก์ชันออกมาอย่างข้างล่างนี้

let rec merge (x,y) = match (x,y) with
        ([],y) -> y
        | (x,[]) -> x
        | (x::xs, y::ys) when x>y -> x@(merge (xs,y::ys))
        | (x::xs, y::ys) -> y@(merge (ys,x::xs));;

ถ้าเทียบกับ prolog ดู จะค่อนข้างคล้ายกันมาก

merge(X,[],X).
merge([],X,X).
merge([X|Xs],[Y|Ys],[X|Zs]) :-
        X > Y, merge(Xs,[Y|Ys],Zs).
merge([X|Xs],[Y|Ys],[Y|Zs]) :-
        merge([X|Xs],Ys,Zs).

สิ่งแตกต่างที่พบคือภาษาตระกูล ML นี้ มองทุกอย่างเป็นฟังก์ชัน คือมีอินพุตแยกจากเอาท์พุต ส่วน prolog มองว่าเป็นเพียงความสัมพันธ์ระหว่างตัวแปรสามตัว ผมคิดว่าโดยทั่วไปแล้ว ocaml น่าจะทำความเข้าใจได้ง่ายกว่า เพราะมีการแบ่งแยกชัดเจน ในขณะที่ prolog ต้องดูเอาเอง ว่าต้องการให้อะไรเป็นสิ่งที่ใส่ลงไป แล้วอะไรเป็นสิ่งที่ต้องการ แต่ก็นั่นแหละ ocaml ก็คงสู้ prolog ไม่ได้ในเรื่อง unification เพราะพารามิเตอร์ของ predicate ทุกตัว ถือเป็นอินพุตได้หมด จะหาค่า X จาก merge(X,[3,2,1],[4,3,2,1]) ก็ทำได้ไม่แปลก ในขณะที่ ocaml ไม่ได้มีเป้าหมายเพื่อทำแบบนี้ ข้อดีอีกอย่างหนึ่งของ ocaml คือเรื่อง type เพราะต้องกำหนดให้แน่นอน (ขนาดบวก int กับ float ยังใช้เครื่องหมายแยกกันเลย) คงจะช่วยลดความซับซ้่อนไปได้เยอะ ในขณะที่ prolog ไม่เคยสนใจ type เลย ทำให้มั่วได้บ่อยมาก